$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文件一样通用