0

wpf mvvm アプリケーションで csv ファイルに double を書き込む必要があります。これらの double は、元々はインバリアント カルチャで設定された文字列です。サーバー側のアプリケーションからそのように受け取り、それらを解析します

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 で開くと、「。」で区切られた 10 進数値が含まれています。それ以外の "、"。このように、Excel はこれらの値を 10 進値として認識しません。これらの値は、Excel の数値カルチャ/Windows 設定カルチャに含まれていないためです。

誰が何が起こっているのか知っていますか?

編集

ただ明確にします。ハードコードされた文化を設定する方法を探しているわけではありません。特に、Excel が使用する Windows に設定されたカルチャが必要です。

4

2 に答える 2

-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 に答える