0

私はいくつかの浮動小数点値を書き込んで、次のように優れたコード(c++)を持っています:

...
values[ position ].bstrVal = formattedValue;
values[ position ].vt = VT_BSTR;
...

ご覧のとおり、これらの浮動小数点値は文字列の形式で格納され、小数点はさまざまな方法でフォーマットされています。たとえば、「110.000000」、「20.11」などです (この例は英語ロケール用です)。

英語のロケールが使用されている場合に完全に機能するようになりました。ただし、コントロール パネルでドイツ語ロケールに切り替えると、小数点が "," に変更されます (問題ありません) が、これらのローカライズされた文字列を Excel に渡した後、正しく変換されません。たとえば、「110,000000」と書いた場合、Excel で 1 億を取得しています。「20,11」などの他の値はテキストのままです。

これを修正する唯一の方法は、小数点を「.」で上書きすることです。Excelに書き込む前に私のプログラムで。VT_BSTR を使用すると、変換がロケールを認識しない理由はありますか?

また、プログラムのロケールをデフォルトのものからドイツ語に切り替えようとしたことも付け加えておく必要がありますが、それでもうまくいきません。

前もって感謝します

4

1 に答える 1

1

Excel に値の型を推測させることは、決して良い考えではありません。VT_BSTR は使用しないでください。通貨値はバリアント型 VT_CY である必要があります。cyVal メンバーに値を割り当てます。これは 8 バイトの整数値 (LONGLONG 型の int64 メンバー) であり、金額に 10,000 を掛けたものです。1万:)

于 2012-10-04T11:25:02.307 に答える