PHP生成EXCEL,支持多个SHEET

此版本为本人演绎版本,原版本地址http://code.google.com/p/php-excel/

php-excel.class.php:

<?php
class WorkSheet
{
private $lines = array();
public $sWorksheetTitle;
public function __construct($sWorksheetTitle)
{
$this->setWorksheetTitle($sWorksheetTitle);
}
public function setWorksheetTitle ($title)
{
$title = preg_replace ("/[\\\¦:¦\/¦\?¦\*¦\[¦\]]/", "", $title);
$title = substr ($title, 0, 31);
$this->sWorksheetTitle = $title;
}
public function addRow ($array)
{
$cells = "";
foreach ($array as $k => $v){
$type = 'String';
$v = htmlentities($v, ENT_COMPAT, "UTF-8");
$cells .= "<Cell><Data ss:Type=\"$type\">" . $v . "</Data></Cell>\n";
}
$this->lines[] = "<Row>\n" . $cells . "</Row>\n";
}
public function printline()
{
foreach ($this->lines as $line)
{
echo $line;
}
}
}
class Excel
{
public $worksheets = array();
public function __construct($sWorksheetTitle)
{
$this->addsheet($sWorksheetTitle);
}
public function addsheet($title)
{
$this->worksheets[$title] = new WorkSheet($title);
}
public function generate ($filename = 'excel-export')
{
$filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $filename);
header("Content-Type: application/vnd.ms-excel; charset=UTF-8");
header("Content-Disposition: inline; filename=\"" . $filename . ".xls\"");
echo stripslashes("<?xml version=\"1.0\" encoding=\"UTF-8\"?\>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\">");
foreach ($this->worksheets as $worksheet)
{
echo "\n<Worksheet ss:Name=\"" . $worksheet->sWorksheetTitle . "\">\n<Table>\n";
$worksheet->printline();
echo "</Table>\n</Worksheet>\n";
}
echo "</Workbook>";
}
}
?>

 

使用方法:

$xls = new Excel('Sheet'); //构造函数,参数为第一个sheet名称
$xls->worksheets['Sheet']->addRow(array("1","2","3")); //添加一行,数据为1,2,3
$xls->worksheets['Sheet']->addRow(array("1","2","3")); //添加一行,数据为1,2,3
$xls->worksheets['Sheet']->addRow(array("1","2","3")); //添加一行,数据为1,2,3
$xls->worksheets['Sheet']->addRow(array("1","2","3")); //添加一行,数据为1,2,3
$xls->addsheet('Test');//新建一个sheet,参数为sheet名称
$xls->worksheets['Test']->addRow(array("3","2","3"));//在第二个sheet添加一行
$xls->generate('my-test');//下载excel,参数为文件名

PHP生成EXCEL,支持多个SHEET的更多相关文章

  1. 【C#附源码】数据库文档生成工具支持(Excel+Htm)

    数据库文档生成工具是用C#开发的基于NPOI组件的小工具.软件源码大小不到10MB.支持生成Excel 和Html 两种文档形式.了解更多,请访问:http://www.oschina.net/cod ...

  2. 两种方式实现java生成Excel

    Web应用中难免会遇到需要将数据导出并生成excel文件的需求.同样,对于本博客中的总结,也是建立在为了完成这样的一个需求,才开始去了解其实现形式,并且顺利完成需求的开发,先将实现过程总结于此.本博文 ...

  3. 使用node.js生成excel报表下载(excel-export express篇)

    引言:日常工作中已经有许多应用功能块使用了nodejs作为web服务器,而生成报表下载也是我们在传统应用. java中提供了2套类库实现(jxl 和POI),.NET 作为微软的亲儿子更加不用说,各种 ...

  4. phpexcel生成excel并下载

    Loader::import('PHPExcel.Classes.PHPExcel'); // tp5中只需将phpexcel文件放入extend文件夹中,即可采用该方法引入,需要先 use thin ...

  5. JAVA利用JXL导出/生成 EXCEL

    /** * 导出导出采暖市场部收入.成本.利润明细表 * @author JIA-G-Y */ public String exporExcel(String str) { String str=Se ...

  6. EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

    大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...

  7. JAVA POI 应用系列(1)--生成Excel

    POI简介(官网:http://poi.apache.org/)     Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office ...

  8. 实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件

    今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多 ...

  9. POI生成EXCEL文件

    POI生成EXCEL文件 一.背景 根据指定格式的JSON文件生成对应的excel文件,需求如下 支持多sheet 支持单元格合并 支持插入图片 支持单元格样式可定制 需要 标题(title),表头( ...

随机推荐

  1. Java High Level REST Client 使用地理位置查询

    Java High Level REST Client 使用地理位置查询 一.需求 二.对应的query语句 三.对应java代码 1.引入 jar 包 2.创建 RestHighLevelClien ...

  2. 链表分割 牛客网 程序员面试金典 C++ Python

    链表分割 牛客网 程序员面试金典 C++ Python 题目描述 编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* p ...

  3. Shooting Bricks题解

    题目传送门 以后我绝对不会一直磕着一道题磕几个小时了...感觉还是自己节奏出了问题,不知为啥感觉有点小慌... 算了,其实再回头仔细看一下这个题dp的思路还是比较好想出来的,打代码之前一定要做好足够的 ...

  4. ELK集群之logstash(5)

    Logstash工作原理   Logstash事件处理有三个阶段:inputs → filters → outputs.是一个接收,处理,转发日志的工具.支持系统日志,webserver日志,错误日志 ...

  5. Vue.js教程 2.体验Vue

    Vue.js教程 2.体验Vue <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  6. map2bean & bean2map

    1,自己实现: /** * @author xx * @since 2020/7/8 */ @Slf4j public class JavaBeanUtils { /** * 实体类转map * 效率 ...

  7. ARM汇编解决阶乘以及大小写转换

    环境以及硬件 一.硬件仿真基于 SAMSUNG's S3C44B0X 16/32-bit RISC microprocessor 芯片,仿真器为 J-LINK 二.编写指令软件为 Integrated ...

  8. 如何解决Redis缓存雪崩、缓存穿透

    缓存雪崩 数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机. 比如一个雪崩的简单过程: 1.redis集群大面积故障 2.缓存失 ...

  9. Ubuntu加速訪問GitHub

    Github一般用于Git的远程仓库,由于服务器位于国外,国内访问速度比较慢,为了提高访问速度,决定绕过DNS域名解析. 获取Github的IP地址 按下ctrl+alt+T打开命令终端,输入: ns ...

  10. [hdu6989]Didn't I Say to Make My Abilities Average in the Next Life?!

    显然问题即求$\frac{\sum_{x\le l\le r\le y}(\max_{l\le i\le r}a_{i}+\min_{l\le i\le r}a_{i})}{(y-x+2)(y-x+1 ...