Gil*_*Gil 4 c# .net-4.0 openxml excel-2010 openxml-sdk
我在从Excel 2010 工作表读取值时遇到一些问题。
\n\n在标准 Excel 2010 工作表上,我有一个单元格,其货币格式带有两位小数和 value 1270,14 \xe2\x82\xac。
当我在 OpenXML 2.0(C# 代码)上读取此值时,我得到的1270.1400000000001不是原始的1270.14.
对于具有相同格式的任何单元格上的其他值,也会发生同样的情况。
\n\n从单元格 OpenXML 代码中获取值:
\n\nprivate string GetCellValue(string column, int row)\n{\n column = column.ToUpper();\n var targetCell = cells.Where(p => p.CellReference == (column + row)).SingleOrDefault();\n\n var value = String.Empty;\n\n if (targetCell.DataType != null && targetCell.DataType.Value == CellValues.SharedString)\n {\n var index = int.Parse(targetCell.CellValue.Text);\n value = cellValues[index].InnerText.Trim();\n }\n else\n {\n if (targetCell.CellValue != null)\n {\n value = targetCell.CellValue.Text.Trim();\n }\n else\n {\n value = null;\n }\n }\n\n return value;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n特定值传递“if”DataType 不为空条件并使用以下行检索值:
\n\nvalue = targetCell.CellValue.Text.Trim();
如何解决这个问题?
\n\n为什么这个错误可能发生?
\n由于Excel中数字存储为double,因此您可以先将字符串解析为double,然后转换回字符串以获得显示的值:
string s = Convert.ToDouble(value).ToString();
Run Code Online (Sandbox Code Playgroud)
让微软自己解决自己的问题。
| 归档时间: |
|
| 查看次数: |
4734 次 |
| 最近记录: |