【问题标题】:Generating a CSV file which can be opened by excel生成一个可以用excel打开的CSV文件
【发布时间】:2026-01-08 06:15:01
【问题描述】:

我在 PHP 中使用 fputcsv 函数生成一个 CSV 文件。一切正常,除了每一行是 Microsoft Excel 中的一列数据。是否可以在每个数据中添加或替换任何内容,以便可以按数据打开列?

$output = fopen('php://output', 'w');

foreach(...){
  fputcsv($output, $csv_data);

CSV 内容就像

2017-01-06 14:51:15,1,2
2017-01-06 14:50:08,3,4

【问题讨论】:

  • 如果你在 PHP 中处理 CSV 文件,你不会后悔使用这个:csv.thephpleague.com
  • php.net/manual/de/function.fputcsv.php第三个参数是你的分隔符......顺便说一句,在excel中你可以使用“数据”选项卡并导入文本文件,这样你也可以处理你的src

标签: php excel csv


【解决方案1】:

Excel 通常会使用逗号解析您的记录。

如果要将记录放入单列,请在导入前用双引号将它们括起来:

“2017-01-06 14:51:15,1,2”
"2017-01-06 14:50:08,3,4"

这会产生:

【讨论】:

  • Excel 将始终使用操作系统设置作为字段分隔符,这是国际设置的一部分。在像西欧这样的地方,它通常是;。 (而且,是的,这实际上很愚蠢。)
  • @ÁlvaroGonzález 谢谢......是用来转义分隔符的双引号还是不同的字符??
  • 最新版本的 MS Excel 将sep=, 行识别为文件的第一行,允许您使用逗号作为导入分隔符,而不管区域设置如何;但许多其他读取 csv 文件的脚本会将其视为实际的数据行
  • 我远不是 CSV 和 Excel 方面的专家,但我相信 " 在所有情况下都可以很好地用作分隔符。但是,我认为 OP 的问题与您的答案所针对的相反:他得到了您的屏幕截图显示的内容,他实际上想要三列。那是因为他生活在一个以; 为字段分隔符的国家/地区(很可能是因为, 是小数点分隔符)。
  • @ÁlvaroGonzález 谢谢...我错过了这个问题。
最近更新 更多