PHP csv功能,微软安全吗?

时间:2010-08-02 07:08:37

标签: php csv

我一直在研究php fputcsv函数,并听说过一些注释,使用这种方法创建的文件在microsoft excel上不起作用,这是正确的吗?

评论php.net

  

因为PHP通常是基于* nix的,所以   有意义的是行结尾   总是\ n而不是\ r \ n。然而,   某些微软程序(我是   看着你,Access 97),将会失败   除非正确识别CSV   每行以\ r \ n结尾。其次,如果   第一列标题/值   CSV文件以大写ID开头,   某些微软程序(哼,   Excel 2007)将文件解释为   是SYLK格式而不是   CSV,如下所述:   http://support.microsoft.com/kb/323626

所以

如果我打算以

的格式输出数据

0,0278221234,60143512345,5pt code,yes
1,0278221234,60143512345,5pt代码,是
2,0278221234,60143512345,5pt代码,是
3,0278221234,60143512345,5pt代码,是

使用此功能编写文件有什么区别

并简单地创建如上所述的行,并以\ r \ n?

结束它们

2 个答案:

答案 0 :(得分:1)

  

使用此方法创建的文件无法在Microsoft Excel上运行,这是正确的吗?

这是部分正确的。当用户使用导入向导时,MS Excel可以正确读取文件。但是你会希望文件在没有用户知道你是如何制作的情况下工作 - 也就是说,不使用导入向导。

要使文件自动运行,请使用; (分号)作为记录分隔符。 E.g。

$data = array("one", "two", "three");
$fh = fopen('test.csv', 'w');
fputcsv($fh, $data, ";");
fclose($fh);

另请注意,为了将UTF-8写入CSV,您必须将UTF-8 BOM添加到文件的开头。

答案 1 :(得分:0)

如果Excel出现问题,创建文件后,始终可以用\ r \ n替换\ n。这就像又有4行代码。

[编辑]

刚刚使用Excel 2007进行测试。打开正常。