PHP 產生 CSV for Microsoft Office Excel 顯示技巧

CSV一般是以逗號(,)分隔欄位,以換行符號(\n)
當成一筆記錄的一種通用檔案格式,
但是為了M$的Excel顯示,有些時候必需要修正CSV的內容

以下是標準的csv輸出

header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:attachment;filename=test.csv");
$result = "aaa,bbbccc,000007\n";
//csv only support big5 encoding
$result = mb_convert_encoding($result,'Big5','UTF-8');
echo $result;


Q1:當欄位內容中包含逗號(,),想在excel內正常顯示逗號(,)
A1:使用雙引號(")將整個欄位包起來,舉例:$result = "aaa,\"bbb,ccc\",000007\n";

Q2:當欄位內容包含換行符號(\n),想在excel內的儲存格換行
A2:同A1

Q3:當欄位內容有手機之類以0開頭的數字,想正確顯示
A3:同A1,並在雙引號前加上一個等號(=),舉例:$result = "aaa,\"bbb,ccc\",=\"000007\"\n";

Q4:當欄位內容有雙引號("),想在excel內正常顯示雙引號(")
A4:同A1,並將要顯示的雙引號改為2個雙引號,舉例:$result =
"\"xx\"\"aaa\"\"xx\",\"bbb,ccc\",=\"000007\"\n";

註:這些修正只針對M$的Excel顯示作修正,但不一定相容於其它系統正常判讀這個CSV檔

留言