至于什么格式自己命名标头和 文件后缀名即可
简化代码如下
$str = "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\nxmlns:x=\"urn:schemas-microsoft-com:office:excel\"\r\nxmlns=\"http://www.w3.org/TR/REC-html40\">\r\n<head>\r\n<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>";
$str .= "<table border=1>";
// $str.="<head style='text-align:center;'><h2>曾经沧海难为水,除去巫山不是云</h2></head>";
$datas = [];
$datas[] = ['订单号', '卡种名称', '面值', '卡种分类', '卡号', '卡密', '状态', '提交时间', '用户ID', '操作记录'];
foreach ($datas as $key => $rt) {
$str .= "<tr>";
foreach ($rt as $k => $v) {
$str .= "<td>{$v}</td>";
}
$str .= "</tr>\n";
}
// $file_name = 'excelData.html';
// $pub->written_file($str, 'excelData.html');
//分段数据量
$num = 10000;
//友好输出excel
$filename = date('YmdHis') . 'data.xls';
header("Content-Type: application/vnd.ms-excel; name='excel'");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=" . $filename);
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
header("Expires: 0");
echo $str;
//刷新输出缓冲到浏览器
ob_flush();
//必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
flush();
for ($s_num = 0; $s_num < $count; $s_num+=$num) {
//分段 -- 写入文件
//查找数据
//根据条件搜索
$sql = "" . " LIMIT " . $s_num . "," . $num;
$data = $mod->query($sql);
$datas = [];
if (!empty($data)) {
foreach ($data as $val) {
$datas[] = [$val[''], $val[''], $val[''], $val[''],
'卡号: ' . $val[''], '卡密: ' . $val[''], $val['']
, date('Y-m-d H:i:s', $val['']), $val[''], $val['']
];
}
}
$str = '';
foreach ($datas as $key => $rt) {
$str .= "<tr>";
foreach ($rt as $k => $v) {
$str .= "<td>{$v}</td>";
}
$str .= "</tr>\n";
}
echo $str;
ob_flush();
flush();
}
$str = "</table></body></html>";
echo $str;
ob_flush();
flush();
die;
测试可用
遇到个问题,只存在65510行