首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenXML 2.0获取错误的单元格值

OpenXML 2.0获取错误的单元格值
EN

Stack Overflow用户
提问于 2012-01-04 15:04:16
回答 2查看 4.3K关注 0票数 4

我在读取Excel 2010工作表中的值时遇到了一些问题。

在标准的Excel2010工作表中,我有一个带有货币格式的单元格,带有两个小数位和值1270,14 €

当我在OpenXML 2.0 (C#代码)上读取这个值时,我得到的是1270.1400000000001而不是原始的1270.14

同样的情况也发生在任何具有相同形状的单元格上的其他值上。

从单元格OpenXML代码中获取值:

代码语言:javascript
运行
复制
private string GetCellValue(string column, int row)
{
    column = column.ToUpper();
    var targetCell = cells.Where(p => p.CellReference == (column + row)).SingleOrDefault();

    var value = String.Empty;

    if (targetCell.DataType != null && targetCell.DataType.Value == CellValues.SharedString)
    {
        var index = int.Parse(targetCell.CellValue.Text);
        value = cellValues[index].InnerText.Trim();
    }
    else
    {
        if (targetCell.CellValue != null)
        {
            value = targetCell.CellValue.Text.Trim();
        }
        else
        {
            value = null;
        }
    }

    return value;
}

特定值传递'if‘DataType不是空条件,并使用行检索该值:

value = targetCell.CellValue.Text.Trim();

怎么解决这个问题呢?

为什么这个错误是可能的呢?

EN

回答 2

Stack Overflow用户

发布于 2016-09-06 09:43:43

由于数字在Excel中存储为double,所以您可以首先将字符串解析为double,然后将其转换回string以获得显示的值:

代码语言:javascript
运行
复制
    string s = Convert.ToDouble(value).ToString();

让微软来处理它自己的问题。

票数 5
EN

Stack Overflow用户

发布于 2012-01-04 20:59:58

尽管它可能不适合您的应用程序,但最简单的修复方法是简单地舍弃返回的值,并将其赋值或在适用的情况下返回。somevarhere=Math.Round(Convert.ToDouble(value), 2)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8728995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档