我在读取一个Excel 2010工作表上的数值时遇到了一些问题。
在标准的Excel 2010工作表上,我有一个带有货币格式和两位小数的单元格,数值为1270.14欧元
。
当我在OpenXML 2.0(C#代码)中读取此值时,我得到的结果是1270.1400000000001
而不是原始的1270.14
。
对于任何具有相同格式的单元格中的其他值也会出现相同的情况。
从单元格获取值的OpenXML代码:
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();
这个错误如何修复?为什么会出现这个错误?