导出CSV的Excel
我使用fputcsv($file, $data)
在PHP中编写了一个CSV文件。 这一切工作,但是我不能只是在Excel中打开它,但必须导入它,并指定编码和使用哪个分隔符(在向导中)。 我已经看到其他网站的出口,只要点击它们就可以正确打开,现在想知道我应该怎样做才能达到这个目的。
我尝试使用这个库: http : //code.google.com/p/parsecsv-for-php/但我甚至不能让它运行,我真的不相信,如果它真的会帮助我…
尽pipeCVS中“C =逗号”,Excel使用您的区域设置本地分隔符。 所以假设fputcsv
总是使用逗号,如果您的语言环境分隔符是例如分号,它将不起作用。
可能您引用的其他页面会从Accept-Language
HTTP标头中推断出分隔符。
编辑:什么谷歌Adsense做,当你点击导出到Excel CSV ,是它使用Tab
作为分隔符。 那是有效的。
在这两种情况下,设置fputcsv
的第三个参数( delimiter
)来覆盖默认的逗号。 例如用于制表符: fputcsv($handle, $fields, "\t");
绝对比较为你工作的CSV格式与fputcsv
生成的fputcsv
。
考虑在你的问题中包括两个例子。 你可能会得到更好的答案。
这真是一团糟。 你当然可以使用sep =; 或sep =或sep = \ t或任何使Excel知道你的CSV中使用的分隔符。 只要把这个string放在你的CSV内容的开头。 例如:
fwrite($ handle,“sep =,\ n”); fputcsv($处理,$ yourcsvcontent); 这工作顺利。 但是,如果您需要分别支持特殊字符或MB,则它不能与使Excel了解UTF-8所需的BOM结合使用。
最后,要做到防弹,您需要读出用户的语言环境,并相应地设置分隔符,如上所述。 在CSV内容的开始部分添加一个BOM(“\ xEF \ xBB \ xBF”),然后像下面这样写CSV:fputcsv($ handle,$ fields,$ user_locale_seperator); 其中$ user_locale_seperator是通过检查用户的语言环境检索到的分隔符。 不舒服,但它的工作…
你可能有一个编码问题。
试试这个post:
http://onwebdev.blogspot.com.es/2010/10/php-encoding-of-csv-file-for-excel.html