码字不易,转载请附原链,搬砖繁忙回复不及时见谅,技术交流请加QQ群:909211071
解释几个请求头:
- Content-type:内容类型
- Content-Disposition:设置为浏览器显示(Disposition)或作为文件下载(attachment)
- Expires:设置浏览器缓存有效期,0为不缓存
- Cache-Control:设置请求和响应的缓存机制指令,指令均为单向,must-revalidate表示每次使用缓存前校验有效期,post-check=0,pre-check=0是IE5.0才有的防cache声明
- Content-Transfer-Encoding:内容传输编码
- Pragma:HTTP1.0客户端向后兼容,与 Cache-Control: no-cache 作用相同
<?php
function exportCsv($data, $title, $filename = '报表')
{
foreach ($title as $k => $v) {
$title[$k] = iconv("UTF-8", "GBK//IGNORE", $v);
}
$csv_data = '';
$csv_data .= implode(',', $title) . PHP_EOL;
foreach ($data as $k => $v) {
foreach ($v as $i => $item) {
$v[$i] = iconv("UTF-8", "GBK//IGNORE", $item);
}
$csv_data .= implode(',', $v) . PHP_EOL;
}
header('Content-type:csv');
header('Content-Disposition: attachment; filename=' . $filename . '.csv');
header("Content-Transfer-Encoding: binary");
header('Expires: 0');
if (strpos($_SERVER['HTTP_USER_AGENT'], "MSIE") !== FALSE)
{
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: no-cache');
}
else
{
header('Cache-Control: no-store, max-age=0, no-cache');
header('Pragma: no-cache');
}
echo $csv_data;
}
$title = [
'第一列',
'第二列',
'第三列',
];
$data = [
[1, 2, 3],
[1, 2, 3],
[1, 2, 3],
];
exportCsv($data, $title, '报表');
GoLang:go实现导出excel或csv文件_我有辣条 跟我走的博客-CSDN博客_go导出excel
参考手册:Transfer-Encoding (Headers) - HTTP 中文开发手册 - 开发者手册 - 腾讯云开发者社区-腾讯云