我生成了一个扩展名为 .csv 的 CSV 文件,其中一行中的每一块数据都用逗号分隔:
1,2,3,4
1,2,3,4
该文件通过电子邮件发送,我希望当客户打开它时,她可以看到按列排列的数据。
这种事可能吗?
PS:我可以自由地更改分隔符。
答案1
使用制表符代替逗号。如果这不起作用,请为制表符分隔文件添加 xls 扩展名。
答案2
遗憾的是,微软决定在不同的本地化版本中使用不同的分隔符CSV
(代表C奥玛 年代分开五价值观)。这在国际范围内开展工作时尤其令人恼火。
如果只是为了得到csv
可读在每个系统中,都有一个未记录的技巧:在第一行写入SEP=;
。此行告诉 EXCEL 使用;
作为分隔符(实际上您可以使用任何(单个)字符(;,|@#'
...))
注意:此行只是csv
文件本身的一部分。它将不是成为EXCEL中电子表格的一部分。也就是说,它不会被显示,也不会被写入,无论你定义以何种格式写入或导出。
注意:这是 Microsoft EXCEL 特有的。其他电子表格程序可能无法理解这一点。
答案3
Excel 打开 CSV 文件时的行为在很大程度上取决于您的本地设置和list separator
下使用的Region and language » Formats » Advanced
。默认情况下,Excel 会假定每个 CSV 都使用该分隔符保存。只要 CSV 不是来自其他国家/地区,情况就是如此!
如果您的客户在其他国家,他们可能会看到与您想象不同的结果。
例如,在这里你可以看到,德国 Excel 将使用分号,而不是像美国那样的逗号
更令人困惑的是,该设置会干扰小数点符号,小数点符号可以在区域设置下Excel Options » Advanced » Use system separators
或通过区域设置单独设置,如上所示。Excel 不能使用与小数点制表符和列表分隔符相同的符号。它会自动使用逗号或分号作为备用分隔符。阅读更多
我将以您的示例创建 3 个文件。每个文件使用不同的分隔符,然后使用 Excel 打开它。
COMMA SEMICOLON TAB
和你的 Excel 不一样?我以为是的。
因此,让我们手动将相同 CSV 文件的扩展名更改为 XLS,看看现在会发生什么。首先,Excel 会发出警告,指出文件扩展名与内容不匹配,然后 Excel 会尝试猜测其中的内容。
COMMA SEMICOLON TAB
结论:TAB + 重命名 + 忽略警告 = 在每个系统上都有效?
也许吧,但我不太确定对于您所在国家/地区以外的客户是否适用。
最好的方法是指导您的客户首先打开一个空白的 Excel,然后转到Data » Get data from text
并手动选择逗号作为分隔符
答案4
在这种情况下,我使用的另一种解决方案是输出基本 HTML 文件,而不是 CSV。Excel 可以打开此文件而不会出现错误。它也可以读取文件中的至少部分格式。