使用 PHP 直接輸出 UTF-8 編碼的 CSV 檔案匯入 EXCEL 會變成亂碼,需要在檔頭加入 BOM 指引碼,EXCEL才會正確讀取內容。
主要是最近寫 CI4 的系統會遇到 composer phpoffice 發生錯誤,所以不能使用 phpoffice 來匯出檔案。查詢了一些資料,用 PHP 直接把資料用 CSV 格式匯出來。
程式片段
$rows = ['學期序',…];
header('Content-type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename=' . $this->nowparam['semestername'] . 'csv');
$output = fopen('php://output', 'w');
fwrite($output, "\xEF\xBB\xBF");
fwrite($output, '"' . implode('","', $rows) . "\"\n");
foreach($data as $tmp){
fwrite($output, '"' . $tmp['semester'] . '",');
…
fwrite($output, "\n");
}
fclose($output);
留言
張貼留言