博客列表 >PHP快速导出Excel【CSV】报表

PHP快速导出Excel【CSV】报表

Alfred的学习笔记
Alfred的学习笔记原创
2020年01月13日 18:08:19827浏览
  1. /**
  2. * 导出excel(csv)
  3. *
  4. * @param string $fileName 文件名称
  5. * @param array $cellName ['id','name']
  6. * @param array $data [['id'=>111,'name'=>'222'],['id'=>111,'name'=>'222']]
  7. * @return void
  8. */
  9. public function downloadCsv($fileName = '', array $cellName, array $data) {
  10. header('Content-Type: application/vnd.ms-excel');
  11. header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
  12. header('Cache-Control: max-age=0');
  13. //打开PHP文件句柄,php://output 表示直接输出到浏览器
  14. $fp = fopen('php://output', 'a');
  15. //输出Excel列名信息
  16. foreach ($cellName as $key => $value) {
  17. //CSV的Excel支持GBK编码,一定要转换,否则乱码
  18. $cellName[$key] = iconv('utf-8', 'gbk', $value);
  19. }
  20. //将数据通过fputcsv写到文件句柄
  21. fputcsv($fp, $cellName);
  22. //计数器
  23. $num = 0;
  24. //每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
  25. $limit = 100000;
  26. //逐行取出数据,不浪费内存
  27. $count = count($data);
  28. for ($i = 0; $i < $count; $i++) {
  29. $num++;
  30. //刷新一下输出buffer,防止由于数据过多造成问题
  31. if ($limit == $num) {
  32. ob_flush();
  33. flush();
  34. $num = 0;
  35. }
  36. $row = $data[$i];
  37. foreach ($row as $key => $value) {
  38. $row[$key] = iconv('utf-8', 'gbk', $value);
  39. }
  40. fputcsv($fp, $row);
  41. }
  42. exit;
  43. }

[引用] PHP高效导出Excel(CSV)

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议