【问题标题】:Using Excel to view CSV file created in PHP使用 Excel 查看用 PHP 创建的 CSV 文件
【发布时间】:2011-05-30 02:33:54
【问题描述】:

我正在寻找一种在 Excel 中打开使用 PHP 脚本创建的 CSV 文件的方法 - 以使 Excel 知道如何解析文件的方式。目前,当我双击使用 PHP 创建的 CSV 文件时,Excel 会在单个列中打开内容,因此它不会解析每一行。此外,如果我在 Excel 中执行 CTRL-O 并选择要打开的 CSV 文件,Excel 会启动一个向导,我可以在其中选择解析和编码选项。

是否有任何“标题”或标志字符可以添加到 PHP 中的 CSV 输出中,以让 Excel 知道如何打开文件?我知道,例如,为了让 Excel 处理 UTF8 编码,需要将 U+FEFF 字符作为第一个字符包含在 CSV 文件中,所以也许有类似的解析?

谢谢。

【问题讨论】:

  • 你是如何编写 csv 文件的? fputcsv()?
  • Excel 不能很好地处理包含 UTF-8 字符的 csv 文件,而与任何 BOM 无关。通常,您需要使用 UTF-32LE BOM (\xFF\xFE\x00\x00) 并且文件的全部内容(包括逗号分隔符、任何附件和转义字符以及返回)都需要转换为单个 UTF -32LE 字符串。至少,如果您“另存为”CSV,这将逆转 Excel 本身使用的过程......我一直在尝试自己用 PHP 构建这样的文件,但到目前为止没有任何成功。
  • 你解决了吗?

标签: php excel parsing encoding csv


【解决方案1】:

请注意,根据您的 xcel 版本,您在直接打开 csv 文件时会在 Excel 中显示或不会显示 csv 选项对话框。

我测试过的最新版本的 Excel 需要特殊的菜单用法才能获得此对话框。 所以你应该提供 Excels 想要的东西。 他想要的是一个制表符分隔的 csv(不是逗号,当他保存一个使用逗号但在他的自动导入中没有的 csv 文件时,这很有趣),在单元格中没有 " 并且没有回车符,而不是在 utf8 中。

有人说他需要某种 UTF16,我记不清了,当然是 Mark Ba​​ker 引用的 UTF-32LE BOM。您肯定需要对字符进行转码。

然后别忘了设置 tes text/csv mime type header。

当我看到这个损坏的自动导入 csv 没有新 Excel 的对话框时,我想知道他们是否不想避免完全使用 csv :-)

嘿,我在过去的某个地方看到,您可以在纯 HTML 表格导出中使用一些神秘的格式化命令,Excel 比 csv 格式更能理解这些命令。 你应该搜索一下它,也许真的更简单。

【讨论】:

    猜你喜欢
    • 2016-12-06
    • 1970-01-01
    • 2013-03-08
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    相关资源
    最近更新 更多