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。一万:)

于 2012-10-04T11:25:02.307 回答