0

我需要将双打写入 wpf mvvm 应用程序中的 csv 文件。这些双打最初是设置在不变文化中的字符串。我像这样从服务器端应用程序接收它们并解析它们

bool result = double.TryParse(row[0], NumberStyles.Any, CultureInfo.InvariantCulture, out value);  

但是,当我尝试将它们写入 csv 文件(使用"" + value、或)时value.ToString(),当前的文化似乎是 EN-US 而它应该是 NL(荷兰语)。我的浏览器设置、Windows 设置、键盘设置……都设置为荷兰语,所以当我检查我的区域号码设置时,它包含小数点分隔符“,”,但我的应用程序用“。”分隔小数点。因为文化是EN-US。value.ToString(CultureInfo.CurrentCulture)value.ToString(System.Globalization.CultureInfo.CurrentCulture)

因此,当我编写 csv 文件并在 excel 中打开它时,它包含用“。”分隔的十进制值。代替 ”,”。这样,我的 excel 不会将这些值视为十进制值,因为它们不在 excel 数字文化/我的 Windows 设置文化中。

有谁知道发生了什么?

编辑

只是要清楚。我不是在寻找一种方法来设置硬编码的文化。我特别需要在 windows 中设置的文化,excel 使用的文化。

4

2 回答 2

0

为了进一步参考,这里是问题所在:

我们有一个相当大的应用程序,可以在其中覆盖日期时间显示等的文化……一旦将当前线程文化设置为新文化,就无法再访问原来的文化了。

因此,为了能够访问 Windows 文化,我创建了一个属性,该属性在更改为应用程序的用户设置之前记住当前文化,并使用该属性将我的数据导出到 csv 文件。

于 2013-09-17T12:25:11.467 回答
-1

你有没有覆盖base.InitializeCulture()

下面的示例代码只是为了理解..也许你有一些想法

    if (Session["CurrentUI"] != null)
    {
        String selectedLanguage = (string)Session["CurrentUI"];
        UICulture = selectedLanguage;
        Culture = selectedLanguage;

        Thread.CurrentThread.CurrentCulture =
            CultureInfo.CreateSpecificCulture(selectedLanguage);
        Thread.CurrentThread.CurrentUICulture = new
            CultureInfo(selectedLanguage);
    }

    base.InitializeCulture();
于 2013-09-17T09:29:34.407 回答