这两天业务基本做完 弄后台的时候用了xls表格导出
我大奔哥说 这个导出的量少 ,推荐使用 csv 表格导出
于是我研究了一下,发现还确实是,更关键的是 代码量变少了
这个代码
/** * Inf csv文件输出 * Argument : * User: 伍先生 * DateTime: 2020/2/20 11:06 * Function: csvsend */ function csvsend($dataArr,$head,$title){ //设置表名 header('Content-Type: application/vnd.ms-excel'); //header设置 header("Content-Disposition: attachment;filename=".$title.".csv"); header('Cache-Control: max-age=0'); //打开php文件句柄,php://output表示直接输出到PHP缓存,a表示将输出的内容追加到文件末尾 $fp = fopen('php://output','a'); //设置表头 foreach($head as $k=>$v){ $head[$k] = iconv("UTF-8","GBK//IGNORE",$v); //将utf-8编码转为gbk。理由是: Excel 以 ANSI 格式打开,不会做编码识别。如果直接用 Excel 打开 UTF-8 编码的 CSV 文件会导致汉字部分出现乱码。 } fputcsv($fp,$head); //fputcsv() 函数将行格式$head化为 CSV 并写入一个打开的文件$fp。 foreach($dataArr as $key=>$data){ foreach($data as $i=> $item){ //$item为一维数组哦 $ss = $item."\t"; $data[$i] = iconv("UTF-8","GBK//IGNORE",$ss); //转为gbk的时候可能会遇到特殊字符‘-’之类的会报错,加 ignore表示这个特殊字符直接忽略不做转换。 } fputcsv($fp,$data); } fclose($fp); exit; }
调用就更简单了
$data = [
["name"=>"张三",'age'=>18,"sex"=>1],
["name"=>"李四",'age'=>18,"sex"=>2]
];
$title = "学生信息";
$header =['姓名',"年龄",'性别'];
csvsend($data,$header,$title);
程序员,产品
8.6
PHP Go 前端
JwCode
渐悟分享