【问题标题】:OleDB Read Excel decimal valueOleDB 读取 Excel 十进制值
【发布时间】:2010-10-11 19:14:22
【问题描述】:

我正在使用 OleDB Ace 12 读取 Excel (xslx) 工作表,其中包含带十进制值的列。当我在 PC 上打开 Excel 工作表时,十进制值的格式正确为 1.850,50(NLD 文化,以逗号作为小数分隔符)

当我使用 OleDB (C#4.0) 读取 Excel 工作表时,该字段的字符串值始终为 1,850.50(美国格式)

我已经尝试设置我填充的数据集的区域设置,设置当前线程的文化等等,但是用 OleDB 适配器填充的数据集总是返回美国格式的小数。

我可以在读取时更改其格式化值的方式吗?还是无论如何总是美国格式?

【问题讨论】:

    标签: c# excel oledb decimal culture


    【解决方案1】:

    我想你只会得到美国格式。你可以在代码中转换它:

    string strFloatingNumber = "24.45"; //a floating point number in English notation
    double output = 0.0; //output double number which will hold the value
    double.TryParse(strFloatingNumber, out output); //convert without exception - assuming no error
    MessageBox.Show(output.ToString("N2", CultureInfo.CreateSpecificCulture("nl-NL")));
    

    【讨论】:

    • 是的,但测试不是 15,11。使用 de-DE 文化进行解析时会抛出异常的 15.11。
    • 我猜你没有得到提示 :) 更新了我的答案。
    • 但是 '1,850.50' 不起作用。我可以替换逗号,你认为这是唯一的解决方案吗?我希望我可以阅读特定的文化,但不幸的是这似乎是不可能的。谢谢你的帮助。 (顺便说一句,我需要十进制,而不是双精度)
    • 试着多分析一下我的答案。答案就在这里。在 MSDN 上学习更多文档 - 这可能有助于您了解如何使用此答案。
    猜你喜欢
    • 2016-12-14
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多