创build可立即被Excel识别的CSV(美国和欧盟)

在许多欧盟国家,逗号“,”被用作小数点分隔符,而在美国是“。”。 用来。

CSV(逗号分隔值)文件应该使用逗号分隔单元格值。 但是,通常会使用制表符'\ t'或其他字符来代替。

有趣的是,如果您使用Microsoft Excel在欧盟国家使用逗号作为小数点分隔符保存一个.csv文件,Excel使用分隔单元格值的值不是转义的逗号,而是分号“;”。 在网上看起来,如果你在美国,Excel将使用适当的逗号保存.csv文件(我无法validation这一点)。

我试图find一种方法来创build一个csv文件,可以被Excel识别,无需用户操作,无论是在欧盟和美国。

下面是一个使用Excel和意大利语区域设置的示例

Excel单元格测试

以上,保存为.csv(MS-DOS),转换为

foo;foo bar; foo'bar;"foo""bar"; foo,bar;foo.bar; foo:bar;"foo;bar"; foo/bar;foo\bar; "foo bar";foo|bar; foo;bar;foobar this is to make the empty line appear 

根据当地的“列表分隔符”,这可能是不可能被正确识别的。

我读过新的Excel 2013需要sep=; 要设置为第一行才能正常工作。 这是一个丑陋的黑客,但它似乎也适用于Excel 2010(除了保存覆盖)…

上面的文字是否适合你,如果你把它保存为CSV文件?

有没有一个不太好的方式告诉Excel哪个字符是分隔符,而不需要用户设置?

谢谢。

时间回到过去一段时间,然后抓住过去的命令。 它将涉及到使用VBA手动编写文件,但它具有您期望的标准: Write

 Open "c:\tmp\myfile.csv" for output as #1 for i=1 to 100 write #1,range("A"&i),range("B"&i),range("C"&i) next i close #1 

您将不得不做一些手动工作 – 它不会将单引号转换为双引号,但其余部分如您所愿:

  • Write#语句在项目之间插入逗号,并在string被写入文件时在其周围插入引号
  • 数字数据总是使用句号作为小数点分隔符写入。
  • date写成#yyyy-mm-dd hh:mm:ss#