在C ++中自动为Excel生成语言环境csv文件

时间:2010-07-14 10:50:47

标签: c++ excel csv

我想生成一个包含数字的csv文件,我希望Excel自动读取该文件。

但是,Excel使用不同的csv格式,具体取决于区域设置。例如:

英文:

  • 文字分隔符:,
  • 小数分隔符:。

西班牙语:

  • 文字分隔符:;
  • 小数分隔符:,

是否可以在C ++中自动检测这些设置,以便根据它们生成文件?

我知道我可以使用语言环境对象获取小数点分隔符,但我不知道如何获取文本分隔符。

这个问题与以下内容有关: CSV is actually … Semicolon Separated Values 。但是,我不想读取文件,而是生成它,我想自动检测设置。

3 个答案:

答案 0 :(得分:4)

我认为标准C ++没有“文本分隔符”的概念,而且这是特定于Windows的。因此,您可以将GetLocaleInfo与LOCALE_SLIST标志一起使用。

答案 1 :(得分:0)

你可以,但不是100%确定(但非常接近它)。检测文本分隔符可以通过分析文件(或体面样本)并确定每个记录中每个字符的频率来完成。每个记录的文本分隔符应该相同(或几乎相同)。它的频率将比每条记录中的字段数少一个。

一个好的分析器不会计算受双引号保护的字符,因为它们是嵌入的而不是分隔符(即,不计算“Boston,MA 02066”中的逗号,因为它受双引号保护)

在确定文本分隔符后,可以确定小数分隔符。只需查找相邻的数字,看看它们之间的区别(这不是之前确定的文本分隔符)。

答案 2 :(得分:0)

使用CultureInfo.TextInfo.ListSeparator。