PHPExcel:用于Excel等文档生成的PHP开源类库

来源:互联网 发布:天罡掌诀推算法 编辑:程序博客网 时间:2024/05/01 13:35

PHPExcel是一个十分强大的文档生成PHP开源类库,它不仅支持生成Excel(.xls)、Excel2007(.xlsx)文档,同时也支持PDF、HTML、CSV文档的生成。此外,PHPExcel还支持以现有的Excel文档为模板填充数据生成新的以上文档。并且,其本身的API文档和示例demo相当完整,非常有助于开发人员使用。

 

PHPExcel的官方网站如下:

http://phpexcel.codeplex.com/

 

当前的版本是1.7.6,下载解压后的PHPExcel的目录结构如下所示:


其中:

Classes目录下是PHPExcel的源代码文件:PHPExcel.php文件是类库的接口,外部的PHP代码通过它来实现对PHPExcel的调用;PHPExcel目录下是各种不同文档(如Excel、Excel2007、PDF等)的读取和生成的具体操作代码,它们由Classes目录下的PHPExcel.php文件通过工厂模式统一进行调用。

Documentation目录下是PHPExcel的官方帮助文档,尤其是API目录下网页文件全部是PHPExcel的API帮助文档,而其它的则是对这个开源项目的介绍。

Tests目录下是PHPExcel的将近40个示例小程序,可以与Classes目录一同放到Apache+PHP环境下进行测试与学习。

 

下面是PHPExcel中一些常用的代码段:

<?php// 导入PHPExcel类库require_once("Classes/PHPExcel.php");// 通常PHPExcel对象有两种实例化的方式// 1. 通过new关键字创建空白文档$phpexcel = new PHPExcel();// 2. 通过读取已有的模板创建$phpexcel = PHPExcel_IOFactory::createReader("Excel5")->load("template.xls");/**  * 实例化之后的PHPExcel对象类似于一个暂存于内存中文档文件,  * 可以对它进行操作以达到修改文档数据的目的 */// 设置文档属性$phpexcel->getProperties()->setCreator("Liu Jian") // 文档作者  ->setLastModifiedBy("Liu Jian") // 最后一次修改者  ->setTitle("Office 2003 XLS Test Document") // 标题  ->setSubject("Office 2003 XLS Test Document") // 主题  ->setDescription("Test document for Office 2003 XLS, generated using PHPExcel.") // 备注  ->setKeywords("office 2003 openxml php") // 关键字  ->setCategory("Test result file"); // 类别  // 默认状态下,新创建的空白文档(通过new)只有一个工作表(sheet),且它的编号(index)为0// 可以通过如下的方式添加新的工作表$phpexcel->createSheet(1);// 获取已有编号的工作表$sheet = $phpexcel->getSheet(1);// 设置当前激活的工作表编号$phpexcel->setActiveSheetIndex(1);// 获取当前激活的工作表$sheet = $phpexcel->getActiveSheet();// 得到工作表之后就可以操作它的单元格以修改数据了// 修改工作表的名称$sheet->setTitle("Test");// 设置单元格A5的值$sheet->setCellValue("A5", date('Y-m-d h:i:s'));// 设置第3行第5列(E3)的值$sheet->setCellValueByColumnAndRow(4, 3, date('Y-m-d h:i:s'));// 获取单元格A5的值$sheet->getCell("A5")->getValue();// 合并单元格$sheet->mergeCells("C3:G6");// 拆分合并的单元格$sheet->unmergeCells("C3:G6");// 设置第3行的属性$sheet->getRowDimension(3)->setRowHeight(100) // 行高  ->setVisible(true) // 是否可见,默认为true   ->setRowIndex(6) // 变更行号为6  ->setOutlineLevel(5); // 优先级别,默认为0,参数必须是0到7// 设置第F列的属性// getColumnDimension("F")可以用getColumnDimensionByColumn(5)代替$sheet->getColumnDimension("F")->setWidth(200) // 列宽   ->setColumnIndex("I") // 变更列号为I   ->setVisible(false) // 是否可见   ->setAutoSize(true); // 自动适应列宽// 在第3行前面插入1行,该行将变成新的第3行,其它的依次下移1行$sheet->insertNewRowBefore(3, 1);// 在第C行前面插入1列,该列将变成新的第C列,其它的依次右移1列$sheet->insertNewColumnBefore("C", 1); // 方法一$sheet->insertNewColumnBeforeByIndex(2, 1); // 方法二,第C列又是第2列// 获取单元格D3的样式对象$style = $sheet->getStyle("D3"); // 等价于getStyleByColumnAndRow(3, 3)// 设置该单元格的字体属性$style->getFont()->setBold(true) // 是否粗体 ->setSize(16) // 字号 ->setName("Gungsuh") // 字体名,只适用于外文字体 ->setItalic(true) // 是否斜体 ->setStrikethrough(true) // 是否有删除线 ->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING) // 下划线类型 ->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLUE); // 字体颜色 // 设置该单元格的背景填充属性$style->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID) // 填充模式 ->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_YELLOW); // 背景颜色// 设置该单元格中数字的格式$style->getNumberFormat()->setFormatCode("0.00");// 设置该单元格中文本对齐方式$style->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER) // 水平方向  ->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); // 垂直方向$sheet->setCellValue("D3", "12.3456");// 在本地保存文档PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5')->save("output.xls");// 输出文档到页面header('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment;filename="test.xls"');header('Cache-Control: max-age=0');PHPExcel_IOFactory::createWriter($phpexcel, 'Excel5')->save('php://output');?>



需要注意的是:

1. PHPExcel本身具有在单元格中插入图片以及设置单元格边框的相关函数,但是个人感觉动态添加图片、设置边框远没有使用静态的excel模版来生成文档更好用。实在需要的情况下可以参见最后的参考资料。

2. 添加新的行或列时,新的行或列的样式(style)会自动与新行/列的前一行/列保持一致。

3. 设置单元格填充颜色时,必须先设定填充模式,否则会失效。

4. 通过PHPExcel_IOFactory的静态方法createReader或createWriter,必须传入文档格式所对应的参数字符串,其中:

  • Excel5对应Excel 2003(.xls)
  • Excel2007对应Excel 2007(.xlsx)
  • PDF对应PDF(.pdf)
  • CSV对应CSV(.csv)

输出文档时,文件的扩展名必须与该参数字符串相契合。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 裙子的腰小了怎么办 白衬衣棉质变软怎么办? 车被自行车刮了怎么办 刮花别人的车门怎么办 破腹产九个月意外怀孕怎么办 破腹产一年半意外怀孕怎么办 37天流产了该怎么办 旧鞋穿着磨脚了怎么办 皮鞋磨脚怎么办小窍门 拉链从下面开了怎么办 高帮足球鞋松了怎么办 橡筋裤头太紧了怎么办 内增高鞋跟太高怎么办 电脑增高架高了怎么办 银行取钱走后回来说少了怎么办 运动t桖太大了怎么办 袖口松紧太紧了怎么办 衣服穿着就皱了怎么办 麻料的衣服很皱怎么办 麻料衣服皱了怎么办 棉麻裤子皱了怎么办 裙子屁股坐皱了怎么办 真丝衣服洗皱了怎么办 粘纤的衣服皱了怎么办 硅胶手机壳粘灰怎么办 橡筋裤子买大了怎么办 橡筋裤子腰小了怎么办 地垫粘瓷砖上怎么办 汽车围裙锈透了怎么办 万能胶水沾到手上怎么办 圆领体恤领口容易皱怎么办 上衣剪了个洞怎么办 上衣破了个洞怎么办 鸟屎腐蚀车漆怎么办 毛风衣叠久了怎么办 黑色的衣服沾毛怎么办 雪纺裙子弄上油怎么办 内衣买小了怎么办妙招 长裤衬衫裙邹了怎么办 100棉衬衣皱了怎么办? 短袖t恤袖口大了怎么办