【发布时间】:2013-09-17 09:19:19
【问题描述】:
我需要将双打写入 wpf mvvm 应用程序中的 csv 文件。 这些双打最初是设置在不变文化中的字符串。 我像这样从服务器端应用程序接收它们并用
解析它们bool result = double.TryParse(row[0], NumberStyles.Any, CultureInfo.InvariantCulture, out value);
但是,当我尝试将它们写入 csv 文件("" + value、value.ToString()、value.ToString(CultureInfo.CurrentCulture) 或 value.ToString(System.Globalization.CultureInfo.CurrentCulture))时,当前的文化似乎是 EN-US 而应该是 NL(荷兰语) )。我的浏览器设置、Windows 设置、键盘设置……都设置为荷兰语,所以当我检查我的区域号码设置时,它包含小数点分隔符“,”,但我的应用程序用“。”分隔小数点。因为文化是 EN-US。
因此,当我编写 csv 文件并在 excel 中打开它时,它包含用“。”分隔的十进制值。代替 ”,”。 这样,我的 excel 不会将这些值视为十进制值,因为它们不在 excel 数字文化/我的 Windows 设置文化中。
有人知道怎么回事吗?
编辑
只是为了清楚。我不是在寻找一种方法来设置硬编码的文化。我特别需要在 windows 中设置的文化,即 excel 使用的文化。
【问题讨论】:
-
你试过Thread.CurrentThread.CurrentUICulture吗?里面有什么?
-
@GerrieSchenck
Thread.CurrentThread.CurrentUICulture将影响资源的加载方式,而不是格式。我猜你的意思是Thread.CurrentThread.CurrentCulture? -
@Fredrik Mörk 我不知道,我通常用它来做格式化。
-
OP 表示
CurrentCulture已经是dutch,你应该尝试检查它是否是dutch(当然在你的代码中)。 -
@GerrieSchenck 我们在这里偏离主题,但简而言之:如果您在没有指定文化的情况下调用
ToString,它将使用CurrentCulture自动格式化。如果您调用ToString并将CurrentUICulture传递给该方法,那么当然会使用该文化。
标签: c# csv double number-formatting currentculture