导出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