PHPExcel:用于Excel等文档生成的PHP开源类库 _PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHPExcel:用于Excel等文档生成的PHP开源类库

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

 2012/12/16 17:23:07  思客迪  程序员俱乐部  我要评论(0)
  • 摘要:http://blog.csdn.net/for023/article/details/7951307PHPExcel是一个十分强大的文档生成PHP开源类库,它不仅支持生成Excel(.xls)、Excel2007(.xlsx)文档,同时也支持PDF、HTML、CSV文档的生成。此外,PHPExcel还支持以现有的Excel文档为模板填充数据生成新的以上文档。并且,其本身的API文档和示例demo相当完整,非常有助于开发人员使用。PHPExcel的官方网站如下:http://phpexcel
  • 标签:PHP excel 文档 Php开源 开源

http://blog.csdn.net/for023/article/details/7951307

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] view plain copy
  1. ??
[php] view plain copy
  1. <?php??
  2. //?导入PHPExcel类库 ??
  3. require_once ( "Classes/PHPExcel.php" );??
  4. ??
  5. //?通常PHPExcel对象有两种实例化的方式 ??
  6. //?1.?通过new关键字创建空白文档 ??
  7. $phpexcel ?=? new ?PHPExcel();??
  8. ??
  9. //?2.?通过读取已有的模板创建 ??
  10. $phpexcel ?=?PHPExcel_IOFactory::createReader( "Excel5" )->load( "template.xls" );??
  11. ??
  12. /** ?
  13. ?*?实例化之后的PHPExcel对象类似于一个暂存于内存中文档文件, ?
  14. ?*?可以对它进行操作以达到修改文档数据的目的 ?
  15. ?*/ ??
  16. //?设置文档属性 ??
  17. $phpexcel ->getProperties()->setCreator( "Liu?Jian" )? //?文档作者 ??
  18. ??????????????????????????->setLastModifiedBy("Liu?Jian" )? //?最后一次修改者 ??
  19. ??????????????????????????->setTitle("Office?2003?XLS?Test?Document" )? //?标题 ??
  20. ??????????????????????????->setSubject("Office?2003?XLS?Test?Document" )? //?主题 ??
  21. ??????????????????????????->setDescription("Test?document?for?Office?2003?XLS,?generated?using?PHPExcel." )? //?备注 ??
  22. ??????????????????????????->setKeywords("office?2003?openxml?php" )? //?关键字 ??
  23. ??????????????????????????->setCategory("Test?result?file" );? //?类别 ??
  24. ????????????????????????????
  25. //?默认状态下,新创建的空白文档(通过new)只有一个工作表(sheet),且它的编号(index)为0 ??
  26. //?可以通过如下的方式添加新的工作表 ??
  27. $phpexcel ->createSheet(1);??
  28. ??
  29. //?获取已有编号的工作表 ??
  30. $sheet ?=? $phpexcel ->getSheet(1);??
  31. ??
  32. //?设置当前激活的工作表编号 ??
  33. $phpexcel ->setActiveSheetIndex(1);??
  34. ??
  35. //?获取当前激活的工作表 ??
  36. $sheet ?=? $phpexcel ->getActiveSheet();??
  37. ??
  38. //?得到工作表之后就可以操作它的单元格以修改数据了 ??
  39. //?修改工作表的名称 ??
  40. $sheet ->setTitle( "Test" );??
  41. ??
  42. //?设置单元格A5的值 ??
  43. $sheet ->setCellValue( "A5" ,? date ( 'Y-m-d?h:i:s' ));??
  44. ??
  45. //?设置第3行第5列(E3)的值 ??
  46. $sheet ->setCellValueByColumnAndRow(4,?3,? date ( 'Y-m-d?h:i:s' ));??
  47. ??
  48. //?获取单元格A5的值 ??
  49. $sheet ->getCell( "A5" )->getValue();??
  50. ??
  51. //?合并单元格 ??
  52. $sheet ->mergeCells( "C3:G6" );??
  53. ??
  54. //?拆分合并的单元格 ??
  55. $sheet ->unmergeCells( "C3:G6" );??
  56. ??
  57. //?设置第3行的属性 ??
  58. $sheet ->getRowDimension(3)->setRowHeight(100)? //?行高 ??
  59. ??????????????????????????->setVisible(true)?//?是否可见,默认为true ??
  60. ??????????????????????????->setRowIndex(6)?//?变更行号为6 ??
  61. ??????????????????????????->setOutlineLevel(5);?//?优先级别,默认为0,参数必须是0到7 ??
  62. ??
  63. //?设置第F列的属性 ??
  64. //?getColumnDimension("F")可以用getColumnDimensionByColumn(5)代替 ??
  65. $sheet ->getColumnDimension( "F" )->setWidth(200)? //?列宽 ??
  66. ???????????????????????????????->setColumnIndex("I" )? //?变更列号为I ??
  67. ???????????????????????????????->setVisible(false)?//?是否可见 ??
  68. ???????????????????????????????->setAutoSize(true);?//?自动适应列宽 ??
  69. ??????????????
  70. //?在第3行前面插入1行,该行将变成新的第3行,其它的依次下移1行 ??
  71. $sheet ->insertNewRowBefore(3,?1);??
  72. ??
  73. //?在第C行前面插入1列,该列将变成新的第C列,其它的依次右移1列 ??
  74. $sheet ->insertNewColumnBefore( "C" ,?1);? //?方法一 ??
  75. $sheet ->insertNewColumnBeforeByIndex(2,?1);? //?方法二,第C列又是第2列 ??
  76. ??
  77. //?获取单元格D3的样式对象 ??
  78. $style ?=? $sheet ->getStyle( "D3" );? //?等价于getStyleByColumnAndRow(3,?3) ??
  79. ??
  80. //?设置该单元格的字体属性 ??
  81. $style ->getFont()->setBold(true)? //?是否粗体 ??
  82. ?????????????????->setSize(16)?//?字号 ??
  83. ?????????????????->setName("Gungsuh" )? //?字体名,只适用于外文字体 ??
  84. ?????????????????->setItalic(true)?//?是否斜体 ??
  85. ?????????????????->setStrikethrough(true)?//?是否有删除线 ??
  86. ?????????????????->setUnderline(PHPExcel_Style_Font::UNDERLINE_DOUBLEACCOUNTING)?//?下划线类型 ??
  87. ?????????????????->getColor()->setARGB(PHPExcel_Style_Color::COLOR_BLUE);?//?字体颜色 ??
  88. ??????????????????
  89. //?设置该单元格的背景填充属性 ??
  90. $style ->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)? //?填充模式 ??
  91. ?????????????????->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_YELLOW);?//?背景颜色 ??
  92. ??
  93. //?设置该单元格中数字的格式 ??
  94. $style ->getNumberFormat()->setFormatCode( "0.00" );??
  95. ??
  96. //?设置该单元格中文本对齐方式 ??
  97. $style ->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER)? //?水平方向 ??
  98. ??????????????????????->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);?//?垂直方向 ??
  99. ??
  100. $sheet ->setCellValue( "D3" ,? "12.3456" );??
  101. ??
  102. //?在本地保存文档 ??
  103. PHPExcel_IOFactory::createWriter($phpexcel ,? 'Excel5' )->save( "output.xls" );??
  104. ??
  105. //?输出文档到页面 ??
  106. header('Content-Type:?application/vnd.ms-excel' );??
  107. header('Content-Disposition:?attachment;filename="test.xls"' );??
  108. header('Cache-Control:?max-age=0' );??
  109. PHPExcel_IOFactory::createWriter($phpexcel ,? 'Excel5' )->save( 'php://output' );??
  110. ?>??

?

需要注意的是:

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)

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

发表评论
用户名: 匿名