当前位置:首页 > 编程技术 > 正文内容

phpoffice/phpexcel 导出Excel表格数据

yc8882年前 (2023-01-14)编程技术292

phpoffice/phpexcel 导出Excel表格数据

1. 下载扩展包


  1. composer require phpoffice/phpexcel

2. 导出数据封装


在TP中使用时可以将以下类文件放入 extend 目录

  1. <?php
  2. /**
  3. * 导出数据
  4. * PHP7.2版本以下推荐使用 phpoffice/phpexcel
  5. * PHP7.2版本以上推荐使用 phpoffice/phpspreadsheet
  6. * composer require phpoffice/phpexcel
  7. */
  8. class Excel
  9. {
  10. /**
  11. * 导出数据使用示例
  12. */
  13. public static function exportDemo()
  14. {
  15. ########## 使用示例 ##########
  16. // 表头
  17. $header = [
  18. 'id', '姓名', '手机号'
  19. ];
  20. // 表格数据
  21. $data = [
  22. [
  23. 'id' => '1',
  24. 'name' => '张三',
  25. 'mobile' => 15037843784,
  26. ],
  27. [
  28. 'id' => 2,
  29. 'name' => '李四',
  30. 'mobile' => 15510191019,
  31. ],
  32. ];
  33. // 设置为字符串
  34. $stringColumn = ['A', 'B'];
  35. // 设置列宽
  36. $colWidth = [
  37. 'C' => 20,
  38. ];
  39. self::export($header, $data, $colWidth, $stringColumn, [
  40. 'filename' => '用户信息',
  41. 'title' => '示例表格',
  42. ]);
  43. }
  44. /**
  45. * 导出Excel表格
  46. * 应用场景:导出订单,导出用户信息
  47. * @param array $header 表头
  48. * @param array $data 表格数据
  49. * @param array $colWidth 设置列宽
  50. * @param array $extra 附加数据
  51. */
  52. public static function export($header, $data, $colWidth, $extra = [])
  53. {
  54. $objPHPExcel = new PHPExcel;
  55. $activeSheet = $objPHPExcel->setActiveSheetIndex(0);
  56. // 默认单元格内容左对齐
  57. $activeSheet
  58. ->getDefaultStyle()
  59. ->getAlignment()
  60. ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
  61. // 设置表格文件名
  62. if ( ! empty($extra['filename']) ) {
  63. // 文件名
  64. $filename = $extra['filename'];
  65. } else {
  66. // 文件名
  67. $filename = '导出示例' . date('Y年m月d日H时i分s秒');
  68. }
  69. // 设置工作薄标题
  70. if ( ! empty($extra['title']) ) {
  71. // 参数要求必须为字符串
  72. $activeSheet->setTitle((string)$extra['title']);
  73. }
  74. // 获取 'A' 的 ASCII值
  75. $key = ord('A');
  76. foreach ($header as $v) {
  77. // 将 ASCII 值转为字符
  78. // 示例: A,B,C,D
  79. $colum = chr($key);
  80. if ( ! empty($colWidth[$colum]) ) {
  81. $activeSheet->getColumnDimension($colum)->setWidth($colWidth[$colum]);
  82. }
  83. // 单元格写入数据
  84. $activeSheet->setCellValue($colum . '1', $v);
  85. $key += 1;
  86. }
  87. // 从第二行写入数据
  88. $column = 2;
  89. foreach ($data as $rows) { // 行写入
  90. $span = ord("A");
  91. foreach ($rows as $keyName => $value) { // 列写入
  92. // 解决php导出excel 长数字变成科学计数法
  93. $activeSheet
  94. ->getStyle(chr($span) . $column)
  95. ->getNumberFormat()
  96. ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
  97. if ( in_array(chr($span), $stringColumn) ) {
  98. // 设置为字符串文本 处理数字过长变为科学计数法和身份证号后几位变为0的情况
  99. $objActSheet->setCellValue(chr($span) . $column, $value . ' ');
  100. } else {
  101. $objActSheet->setCellValue(chr($span) . $column, $value);
  102. }
  103. $span++;
  104. }
  105. $column++;
  106. }
  107. // Excel2003 后缀 .xls
  108. // MIME 协议,文件的类型,不设置,会默认html
  109. // header('Content-Type: application/vnd.ms-excel');
  110. // // MIME 协议的扩展
  111. // header('Content-Disposition:attachment;filename=' . $filename . '.xls');
  112. // // 缓存控制
  113. // header('Cache-Control:max-age=0');
  114. // $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  115. // Excel2007 后缀 .xlsx
  116. // MIME 协议,文件的类型,不设置,会默认html
  117. header('Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  118. // MIME 协议的扩展
  119. header('Content-Disposition:attachment;filename=' . $filename . '.xlsx');
  120. // 缓存控制
  121. header('Cache-Control:max-age=0');
  122. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  123. //文件通过浏览器下载
  124. $objWriter->save('php://output');
  125. }
  126. }

本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10376.html

标签: 软件编程
分享给朋友:

“phpoffice/phpexcel 导出Excel表格数据” 的相关文章