利用phpexcel导出excel表(附加筛选功能)

后端开发   发布日期:2023年05月12日   浏览次数:536

此段代码未经测试,仅用于记录PHPEXCEL导出表格附加自动筛选功能及后期学习测试使用。(顺便说一下,自动筛选功能好像导出2007的xlsx格式才有效,2003的xls格式无效)。

  1. <?php
  2. /*
  3. *author zhy
  4. *date 2012 06 12
  5. *for excel
  6. */
  7. date_default_timezone_set("PRC");
  8. error_reporting(E_ALL);
  9. error_reporting(0);
  10. ini_set('display_errors', TRUE);
  11. ini_set('display_startup_errors', TRUE);
  12. define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
  13. require_once ('../Classes/PHPExcel.php');
  14. require_once("config.php");
  15. require_once("mysql.class.php");
  16. //根据时间生成采购报表
  17. $time = date("a");
  18. $minute = date("i");
  19. $apm = "";
  20. if($time=='pm'){
  21. $apm = $time;
  22. $stime = mktime(12,00,00,date('m'),date('d')-1,date('Y'));
  23. $etime = mktime(11,59,59,date('m'),date('d'),date('Y'));
  24. }else{
  25. $apm = $time;
  26. $stime = mktime(12,00,00,date('m'),date('d')-1,date('Y'));
  27. $etime = mktime(11,59,59,date('m'),date('d'),date('Y'));
  28. }
  29. //实例化excel类
  30. $objPHPExcel = new PHPExcel();
  31. ////////获取文档信息
  32. ////////$objProps = $objPHPExcel->getProperties();
  33. ///////print_r($objProps);
  34. ///////echo "<br/>";
  35. ///////$objProps->setDescription("test_123456");
  36. ///////print_r($objProps);
  37. $objPHPExcel->setActiveSheetIndex(0)
  38. ->setCellValue('A5','商品编码')
  39. ->setCellValue('B5','货号')
  40. ->setCellValue('C5','商品名称')
  41. ->setCellValue('D5','采购量');
  42. //设置选定sheet表名
  43. $objPHPExcel->getActiveSheet()->setTitle('祖名');
  44. //设置字体样式
  45. $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setName('Arial')->setSize(25);//////->setUnderline(true);/////->getColor()->setARGB('FFFF0000');///->setBold(true);
  46. //合并单元格 给单元格赋值(数值,字符串,公式)
  47. $objPHPExcel->getActiveSheet()->mergeCells('A1:D3')->setCellValue('A1', 'zhongyi清单');
  48. ///////$objPHPExcel->getActiveSheet()->mergeCells('A4:D4')->setCellValue('A4', "=SUM(E4:F4)");
  49. $date_now = date("Y-m-d");
  50. $objPHPExcel->getActiveSheet()->mergeCells('A4:D4')->setCellValue('A4', "采购日期:".$date_now." ".$apm." ");
  51. //设置单列宽度
  52. $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(15);
  53. $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);//$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setRowHeight(50);/
  54. $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(44);
  55. $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
  56. //大边框样式 边框加粗
  57. $lineBORDER = array(
  58. 'borders' => array(
  59. 'outline' => array(
  60. 'style' => PHPExcel_Style_Border::BORDER_THICK,
  61. 'color' => array('argb' => '000000'),
  62. ),
  63. ),
  64. );
  65. //表头样式
  66. $head = array(
  67. 'font' => array(
  68. 'bold' => true
  69. ),
  70. 'alignment' => array(
  71. 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
  72. 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
  73. ),
  74. );
  75. //标题样式
  76. $title = array(
  77. 'font' => array(
  78. 'bold' => true
  79. ),
  80. );
  81. //居中对齐
  82. $CENTER = array(
  83. 'alignment' => array(
  84. 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
  85. 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
  86. ),
  87. );
  88. //靠右对齐
  89. $RIGHT = array(
  90. 'alignment' => array(
  91. 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,
  92. 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER
  93. ),
  94. );
  95. //细边框样式
  96. $linestyle = array(
  97. 'borders' => array(
  98. 'outline' => array(
  99. 'style' => PHPExcel_Style_Border::BORDER_THIN,
  100. 'color' => array('argb' => 'FF000000'),
  101. ),
  102. ),
  103. );
  104. $objPHPExcel->getActiveSheet()->getStyle('A1:D3')->applyFromArray($head);///->getAlignment()->getHorizontal('');///->getBorders()->getTop()->setBorderStyle('');
  105. //->setWrapText(true);自动换行
  106. $objPHPExcel->getActiveSheet()->getStyle('A4:D4')->applyFromArray($RIGHT);
  107. $objPHPExcel->getActiveSheet()->getStyle('A5:D5')->applyFromArray($title);
  108. //填充色
  109. /////$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB('FFFF0000');/
  110. //插入数据
  111. $dsql->Execute('omebrand_list',"select i.goods_id , sum( `nums` ) AS num, i.name,i.addon,i.price,g.bn as b,i.bn as h,
  112. g.goods_id,i.goods_id,i.order_id
  113. FROM `sdb_b2c_order_items` as i,sdb_b2c_goods as g
  114. WHERE i.order_id in (select order_id from sdb_b2c_orders where status ='active' and createtime between $stime and $etime) and i.goods_id=g.goods_id and g.cat_id=173 GROUP BY h");
  115. $m = 0;
  116. unset($re);
  117. while($row=$dsql->GetObject('omebrand_list'))
  118. { $re[$m] = get_object_vars($row);
  119. $m++;
  120. }
  121. $row_count = 5;
  122. $objPHPExcel->setActiveSheetIndex(0)
  123. ->setCellValue('A6', 12325416541)
  124. ->setCellValue('B6', 4962132165262)
  125. ->setCellValue('C6', 121515212515241521)
  126. ->setCellValue('D6', 96215465415);
  127. foreach($re as $r => $dataRow) {
  128. $baseRow = 6;
  129. $row = $baseRow + $r;
  130. $bn=$dataRow[h];
  131. $goods_id = $dataRow[goods_id];
  132. $spec_value = "";
  133. $aa = unserialize($dataRow[addon]);
  134. if ($aa['product_attr']){
  135. foreach ($aa['product_attr'] as $arr_special_info) {
  136. $spec_value = $arr_special_info['value'];
  137. }
  138. }
  139. preg_match_all('/\-?\d+\.?\d*/i',$spec_value,$row1);
  140. $num = $row1[0][0];
  141. $all = $num*$dataRow[num];
  142. if($spec_value==''){
  143. $all=$dataRow['num'];
  144. //$prce=$dataRow[price];
  145. }
  146. $objPHPExcel->setActiveSheetIndex(0)
  147. ->setCellValue('A'.$row, $dataRow['b'])
  148. ->setCellValue('B'.$row, $bn)
  149. ->setCellValue('C'.$row, $dataRow['name'])
  150. ->setCellValue('D'.$row, $all);
  151. $objPHPExcel->getActiveSheet()->getStyle('A'.$row_count)->applyFromArray($linestyle);
  152. $objPHPExcel->getActiveSheet()->getStyle('B'.$row_count)->applyFromArray($linestyle);
  153. $objPHPExcel->getActiveSheet()->getStyle('C'.$row_count)->applyFromArray($linestyle);
  154. $objPHPExcel->getActiveSheet()->getStyle('D'.$row_count)->applyFromArray($linestyle);
  155. $baseRow++;
  156. $row_count++;
  157. }
  158. $objPHPExcel->getActiveSheet()->getStyle('A'.$row_count)->applyFromArray($linestyle);
  159. $objPHPExcel->getActiveSheet()->getStyle('B'.$row_count)->applyFromArray($linestyle);
  160. $objPHPExcel->getActiveSheet()->getStyle('C'.$row_count)->applyFromArray($linestyle);
  161. $objPHPExcel->getActiveSheet()->getStyle('D'.$row_count)->applyFromArray($linestyle);
  162. $objPHPExcel->getActiveSheet()->getStyle('A5:D'.$row_count)->applyFromArray($CENTER);
  163. $objPHPExcel->getActiveSheet()->getStyle('A1:D'.$row_count)->applyFromArray($lineBORDER);
  164. //设置打印页边距
  165. $objPHPExcel->getActiveSheet()->getPageMargins()->setTop(0);
  166. $objPHPExcel->getActiveSheet()->getPageMargins()->setRight(0);
  167. $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft(0);
  168. $objPHPExcel->getActiveSheet()->getPageMargins()->setBottom(0);
  169. //设置纸张类型
  170. $objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
  171. //设置自动筛选
  172. $objPHPExcel->getActiveSheet()->setAutoFilter('A5:D'.$row_count);
  173. //设置自动换行
  174. $objPHPExcel->getActiveSheet()->getStyle('B6:B'.$row_count)->getAlignment()->setWrapText(true);
  175. //设置格式化数字
  176. $objPHPExcel->getActiveSheet()->getStyle('A6:A'.$row_count)->getNumberFormat()->setFormatCode('0000000000');
  177. //设置安全级别
  178. $md=md5(time());
  179. $md=substr($md,0,8);
  180. $objPHPExcel->getActiveSheet()->getProtection()->setPassword("$md");
  181. $objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);//
  182. $objPHPExcel->getActiveSheet()->getProtection()->setSort(true);
  183. $objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true);
  184. $objPHPExcel->getActiveSheet()->getProtection()->setFormatCells(true);
  185. //添加图片
  186. /*
  187. $obj=$objPHPExcel->getActiveSheet();
  188. $objDrawing = new PHPExcel_Worksheet_Drawing();
  189. $objDrawing->setName('wsyImg');
  190. $objDrawing->setDescription('Image inserted by zhy');
  191. $objDrawing->setPath('./wsy.jpg');
  192. $objDrawing->setHeight(50);
  193. $objDrawing->setCoordinates('H23');
  194. $objDrawing->setOffsetX(60);
  195. $objDrawing->setRotation(-10); /
  196. $objDrawing->getShadow()->setVisible(true);
  197. $objDrawing->getShadow()->setDirection(-20); /
  198. $objDrawing->setWorksheet($obj);
  199. */
  200. //页眉页脚
  201. //$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('zhy');
  202. //$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('end');
  203. $objPHPExcel->setActiveSheetIndex(0);
  204. $tname=date('Y-m-dH',time());
  205. $tnam=iconv('UTF-8','GBK','祖名订单');
  206. $tname=$tnam.$tname;
  207. // Excel 2007保存
  208. //$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  209. //$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
  210. // Excel 5保存
  211. //$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
  212. //$objWriter->save(str_replace('.php', '.xls', __FILE__));
  213. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  214. $objWriter->save(str_replace('.php', '.xls', __FILE__));
  215. //$url = "/data/home/htdocs/ec/public/files/".date("Y")."/".date("Ym")."/";
  216. createDir($url);
  217. function createDir($dir) {
  218. if (!is_dir ($dir )) {
  219. mkdir($dir, 0777, true);
  220. chmod($dir, 0777);
  221. chown( $dir, 'daemon' );
  222. chgrp( $dir, 'daemon' );
  223. }
  224. }
  225. $name='forexmple_excel';
  226. rename(str_replace('.php', '.xls', __FILE__), $name.'.xls');
  227. ?>

以上就是利用phpexcel导出excel表(附加筛选功能)的详细内容,更多关于利用phpexcel导出excel表(附加筛选功能)的资料请关注九品源码其它相关文章!