php 导出excel
/**
* 导出excel(csv)
* @data 导出数据
* @headArr 表头,列名
* @fileName 输出Excel文件名
*/
public function csv_export($data = [], $headlArr = [], $fileName)
{
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
header('Cache-Control: max-age=0');
//'a'写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
//php://output 表示直接输出到浏览器
$file = fopen('php://output', 'a');
//输出Excel列名信息
foreach ($headlArr as $key => $value) {
//CSV的Excel支持GBK编码,需要进行转码
$headlArr[$key] = iconv('utf-8', 'gbk', $value);
}
//excel的表格投输出
// 将一行(用 headlArr 数组传递)格式化为 CSV 格式并写入由 file 指定的文件。
fputcsv($file, $headlArr);
//计算数量
$num = 0;
//每隔$limit行,刷新一下输出缓冲区(buffer)
$limit = 100000;
//逐行取出数据
$count = count($data);
for ($i = 0; $i < $count; $i++) {
$num++;
//刷新一下输出缓冲区 防止数据过多
if ($limit == $num) {
ob_flush();
flush();
$num = 0;
}
$row = $data[$i];
foreach ($row as $key => $value) {
//转码
$row[$key] = iconv('utf-8', 'gbk', $value);
}
fputcsv($file, $row);
}
}