我在读取值时遇到了一些问题Excel2010 年工作表。
在标准 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();
如何解决这个问题?
为什么这个错误可能发生?
由于Excel中数字存储为double,因此可以先将字符串解析为double,然后转换回字符串以获取显示的值:
string s = Convert.ToDouble(value).ToString();
让微软自己解决自己的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)