本文主要是介绍【黄啊码】PhpSpreadsheet导出excel乱码解决办法,超级简单,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();foreach ($list as $key => $value) {foreach ($field as $k => $v) {if ($key == 0) {$sheet->setCellValue($k . '1', $v[1]);}$i = $key + 2; //表格是从2开始的$sheet->setCellValue($k . $i, $value[$v[0]]);}}
ob_clean();
header("Content-type:application/vnd.ms-excel;charset=UTF-8");
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$title.'.excel"');
header('Cache-Control: max-age=0');
$writer = new Csv($spreadsheet);
$writer->save('php://output');
这代码看上去好像毫无问题,然而导出csv就是乱码,但是xls/xlsx就没问题
网上的网友说得天花乱坠,有一些网友知道是bom头导致的,就干脆自己写一个,但能少写代码不香吗?
最终能解决办法的只有一个,设置bom头。把这里的false改为true,这个方法放在导出csv文件一样通用
如果前端用的是vue接收二进制,还是有可能出现乱码,这时候就需要设置参数,例子如下:
this.$http.get(API请求链接, {emulateJSON:true,responseType: 'blob'})
用axios也同样如此设置:responseType:'blob'
这篇关于【黄啊码】PhpSpreadsheet导出excel乱码解决办法,超级简单的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!