使用 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'] . '",'); … ...
參考資料: 網頁資料存成 CSV 需要解決的問題整理﹍亂碼 + JS 技巧 + Bootstrap 表格@WFU BLOG