最简单的导出方式
使用php提供的fputcsv2 函数
$handle = fopen($fileName, 'w');
foreach ($data as $key => $item) {
fputcsv($handle, $fields, $delimiter, $enclosure, $escape_char);
}
fclose($handle);
会遇到的问题,中文乱码。
解决中文乱码
原因:windows 的office不支持UTF8编码的csv。
解决:windows下,发送bom头,指定编码格式
header('Expires: 0');
header('Cache-control: private');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Description: File Transfer');
header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header("Content-Disposition: attachment; filename=$name.csv");
echo "\xEF\xBB\xBF"; // UTF-8 BOM
foreach ($data as $key => $item) {
foreach ($item as $value){
echo $value.",";
}
echo "\r\n";
}
参考网址:PHP导出CSV文件出现乱码的解决方法
解决意外的逗号分隔符
问题:某个字段有逗号,会被拆分成两列。
参考网址中说可以使用双引号包围起来。我没有成功,使用了str_replace🤓
参考网址:理解CSV格式规范(解析CSV必备)