在php中,经常使用excel表格下载数据,但是当下载的数据量比较大时,会比较慢,以下方法适用于导出大批量的数据,但是当带出的字段较多是,也会影响下载的速度。
<?php
header ( "Content-type:application/vnd.ms-excel" );
header ( "Content-Disposition:filename=" . iconv ( "UTF-8", "gbk//IGNORE", "导出csv" ) . ".csv" );
// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');
$title = array('序号','工号');
// 将中文标题转换编码,否则乱码
foreach ($title as $i => $v) {
$title[$i] = iconv('utf-8', 'gbk//IGNORE', $v);
}
// 将标题名称通过fputcsv写到文件句柄
fputcsv($fp, $title);
$per = 5000;
$i = 0;
while (true) {
$list = $model->getList($sql.'order by id asc limit '.$i*$per.','.$per,$params);
if (empty($list)) {
break;
}
foreach ($list as $key => $value) {
$rows = array();
$rows[] = $value['id'];
foreach ($rows as $k => $v) {
$rows[$k] = iconv('utf-8', 'gbk//IGNORE', $v);
}
fputcsv($fp, $rows);
}
unset($list);
ob_flush();
flush();
$i++;
}
exit;