我正在使用fputcsv($file, $data)
以PHP編寫CSV文件。 它一切正常,但我不能在Excel中打開它,但必須導入它並指定編碼和使用哪個分隔符(在嚮導中)。 我見過其他網站的出口,只要點擊它們就能正確打開,現在想知道我應該怎樣做才能實現這一目標。將Excel導出爲Excel
我嘗試使用這個庫:http://code.google.com/p/parsecsv-for-php/ 但我甚至不能讓它運行,我不是很有信心,如果它真的會幫我...
我正在使用fputcsv($file, $data)
以PHP編寫CSV文件。 它一切正常,但我不能在Excel中打開它,但必須導入它並指定編碼和使用哪個分隔符(在嚮導中)。 我見過其他網站的出口,只要點擊它們就能正確打開,現在想知道我應該怎樣做才能實現這一目標。將Excel導出爲Excel
我嘗試使用這個庫:http://code.google.com/p/parsecsv-for-php/ 但我甚至不能讓它運行,我不是很有信心,如果它真的會幫我...
儘管CVS的 「C =逗號」,Excel使用您的區域設置本地分隔符。因此假設fputcsv
總是使用逗號,如果您的區域設置分隔符是例如分號,則它將不起作用。
可能您提到的其他頁面推斷從Accept-Language
HTTP標頭的分隔符。
編輯: 什麼谷歌Adsense的話,當你點擊導出到Excel CSV,是它使用Tab
作爲分隔符。那是有效的。
在這兩種情況下,將第三個參數(delimiter
)設置爲fputcsv
以覆蓋默認逗號。例如。對於標籤使用:fputcsv($handle, $fields, "\t");
絕對比較適用於您的CSV格式與由fputcsv
生成的格式。
考慮在你的問題中包括兩個例子。你可能會得到更好的答案。
我已經用Google Adsense解決方法更新了答案 –
更改爲我的語言環境分隔符做到了,謝謝!我會暫時離開接受語言;-) – Alex
試試Google'Tab'解決方案。它可能是與語言環境無關的。 –
沒有解決,但編碼是另一個問題,你的鏈接非常好幫助 – Alex
這真是一團糟。你當然可以使用sep =;或sep =或sep = \ t或其他任何方式使Excel知道CSV中使用的分隔符。只需將此字符串放在CSV內容的開頭。例如:
fwrite($handle, "sep=,\n");
fputcsv($handle,$yourcsvcontent);
這工作順利。但是,如果您需要分別支持特殊字符或MB,則它不能與需要使Excel瞭解UTF-8的BOM結合使用。
最後,爲了讓它防彈,您需要讀出用戶語言環境並相應地設置分隔符,如上所述。 在CSV內容開始時輸入BOM ("\xEF\xBB\xBF")
,然後寫入CSV,例如:fputcsv($handle, $fields, $user_locale_seperator);
其中$user_locale_seperator
是通過檢查用戶的語言環境檢索到的分隔符。 不舒服,但它的工作原理...
我一直在尋找這一行數週。 fputcsv不適用於spearator,但fwrite可以! – erdomester
看你的Windows區域配置設置。確保分隔符是逗號。 –