当前位置:Gxlcms > PHP教程 > PHPExcel最简单的实例教程

PHPExcel最简单的实例教程

时间:2021-07-01 10:21:17 帮助过:39人阅读

PHPExcel 是相当强大的 MS Office Excel 文档生成类库,当需要输出比较复杂格式数据的时候,PHPExcel 是个不错的选择。不过其使用方法相对来说也就有些繁琐。列举以记之。

PHP代码

  1. //设置PHPExcel类库的include path
  2. set_include_path( '.' . PATH_SEPARATOR .
  3. 'D:\Zeal\PHP_LIBS' . PATH_SEPARATOR .
  4. get_include_path());
  5. /**
  6. * 打开对应行的注释。
  7. * 如果使用 Excel5 ,输出的内容应该是GBK编码。
  8. */
  9. require_once 'PHPExcel.php' ;
  10. // uncomment
  11. // or
  12. // 创建一个处理对象实例
  13. $objExcel = new PHPExcel();
  14. // 创建文件格式写入对象实例, uncomment
  15. // or
  16. //$objWriter->setOffice2003Compatibility(true);
  17. //*************************************
  18. //设置文档基本属性
  19. $objProps = $objExcel ->getProperties();
  20. $objProps ->setCreator( "Zeal Li" );
  21. $objProps ->setLastModifiedBy( "Zeal Li" );
  22. $objProps ->setTitle( "Office XLS Test Document" );
  23. $objProps ->setSubject( "Office XLS Test Document, Demo" );
  24. $objProps ->setDescription( "Test document, generated by PHPExcel." );
  25. $objProps ->setKeywords( "office excel PHPExcel" );
  26. $objProps ->setCategory( "Test" );
  27. //*************************************
  28. //设置当前的sheet索引,用于后续的内容操作。
  29. //一般只有在使用多个sheet的时候才需要显示调用。
  30. //缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
  31. $objExcel ->setActiveSheetIndex(0);
  32. $objActSheet = $objExcel ->getActiveSheet();
  33. //设置当前活动sheet的名称
  34. $objActSheet ->setTitle( '测试Sheet' );
  35. //*************************************
  36. //设置单元格内容
  37. //
  38. //由PHPExcel根据传入内容自动判断单元格内容类型
  39. $objActSheet ->setCellValue( 'A1' , '字符串内容' ); // 字符串内容
  40. $objActSheet ->setCellValue( 'A2' , 26); // 数值
  41. $objActSheet ->setCellValue( 'A3' , true); // 布尔值
  42. $objActSheet ->setCellValue( 'A4' , '=SUM(A2:A2)' ); // 公式
  43. //显式指定内容类型
  44. $objActSheet ->setCellValueExplicit( 'A5' , '847475847857487584' ,
  45. PHPExcel_Cell_DataType::TYPE_STRING);
  46. //合并单元格
  47. $objActSheet ->mergeCells( 'B1:C22' );
  48. //分离单元格
  49. $objActSheet ->unmergeCells( 'B1:C22' );
  50. //*************************************
  51. //设置单元格样式
  52. //
  53. //设置宽度
  54. $objActSheet ->getColumnDimension( 'B' )->setAutoSize(true);
  55. $objActSheet ->getColumnDimension( 'A' )->setWidth(30);
  56. $objStyleA5 = $objActSheet ->getStyle( 'A5' );
  57. //设置单元格内容的数字格式。
  58. //
  59. //如果使用了 PHPExcel_Writer_Excel5 来生成内容的话,
  60. //各种自定义格式化方式中,其它类型都可以正常使用,但当setFormatCode
  61. //为 FORMAT_NUMBER 的时候,实际出来的效果被没有把格式设置为"0"。需要
  62. //行代码:
  63. //if($ifmt === '0') $ifmt = 1;
  64. //
  65. //都按原始内容全部显示出来。
  66. $objStyleA5
  67. ->getNumberFormat()
  68. ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
  69. //设置字体
  70. $objFontA5 = $objStyleA5 ->getFont();
  71. $objFontA5 ->setName( 'Courier New' );
  72. $objFontA5 ->setSize(10);
  73. $objFontA5 ->setBold(true);
  74. $objFontA5 ->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
  75. $objFontA5 ->getColor()->setARGB( 'FF999999' );
  76. //设置对齐方式
  77. $objAlignA5 = $objStyleA5 ->getAlignment();
  78. $objAlignA5 ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
  79. $objAlignA5 ->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
  80. //设置边框
  81. $objBorderA5 = $objStyleA5 ->getBorders();
  82. $objBorderA5 ->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  83. $objBorderA5 ->getTop()->getColor()->setARGB( 'FFFF0000' ); // color
  84. $objBorderA5 ->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  85. $objBorderA5 ->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  86. $objBorderA5 ->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  87. //设置填充颜色
  88. $objFillA5 = $objStyleA5 ->getFill();
  89. $objFillA5 ->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
  90. $objFillA5 ->getStartColor()->setARGB( 'FFEEEEEE' );
  91. //从指定的单元格复制样式信息.
  92. $objActSheet ->duplicateStyle( $objStyleA5 , 'B1:C22' );
  93. //*************************************
  94. //添加图片
  95. $objDrawing = new PHPExcel_Worksheet_Drawing();
  96. $objDrawing ->setName( 'ZealImg' );
  97. $objDrawing ->setDescription( 'Image inserted by Zeal' );
  98. $objDrawing ->setPath( './zeali.net.logo.gif' );
  99. $objDrawing ->setHeight(36);
  100. $objDrawing ->setCoordinates( 'C23' );
  101. $objDrawing ->setOffsetX(10);
  102. $objDrawing ->setRotation(15);
  103. $objDrawing ->getShadow()->setVisible(true);
  104. $objDrawing ->getShadow()->setDirection(36);
  105. $objDrawing ->setWorksheet( $objActSheet );
  106. //添加一个新的worksheet
  107. $objExcel ->createSheet();
  108. $objExcel ->getSheet(1)->setTitle( '测试2' );
  109. //保护单元格
  110. $objExcel ->getSheet(1)->getProtection()->setSheet(true);
  111. $objExcel ->getSheet(1)->protectCells( 'A1:C22' , 'PHPExcel' );
  112. //*************************************
  113. //输出内容
  114. //
  115. $outputFileName = "output.xls" ;
  116. //到文件
  117. ////$objWriter->save($outputFileName);
  118. //or
  119. //到浏览器
  120. ////header("Content-Type: application/force-download");
  121. ////header("Content-Type: application/octet-stream");
  122. ////header("Content-Type: application/download");
  123. ////header("Content-Transfer-Encoding: binary");
  124. ////header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  125. ////header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  126. ////header("Pragma: no-cache");
  127. ////$objWriter->save('php://output');
  128. ?>

下面是PHPExcel读取Excel文件的例子:

PHP代码

  1. $fileName = 'excel.xls' ;
  2. $path = 'path' ;
  3. $filePath = $path . $fileName ;
  4. $PHPExcel = new PHPExcel();
  5. $PHPReader = new PHPExcel_Reader_Excel2007();
  6. if (! $PHPReader ->canRead( $filePath )){
  7. $PHPReader = new PHPExcel_Reader_Excel5();
  8. if (! $PHPReader ->canRead( $filePath )){
  9. echo 'no Excel' ;
  10. return ;
  11. }
  12. }
  13. $PHPExcel = $PHPReader ->load( $filePath );
  14. $currentSheet = $PHPExcel ->getSheet(0);
  15. /**取得一共有多少列*/
  16. $allColumn = $currentSheet ->getHighestColumn();
  17. /**取得一共有多少行*/
  18. $allRow = array ( $currentSheet ->getHighestRow());
  19. for ( $currentRow = 1; $currentRow <= $allRow ; $currentRow ++){
  20. for ( $currentColumn = 'A' ; $currentColumn <= $allColumn ; $currentColumn ++){
  21. $address = $currentColumn . $currentRow ;
  22. echo $currentSheet ->getCell( $address )->getValue(). "\t" ;
  23. }
  24. echo "\n" ;
  25. }

人气教程排行