首页 > 解决方案 > ClosedXML 未返回正确的单元格值

问题描述

我正在尝试获取单元格的值。在 Excel 中,它显示为0.22(格式为数字,0.00)。在基础 Excel sheetXX.xml 文件中,值为

<v>0.21970469798657719</v>

该值是公式的结果。

当我尝试从 C# 中的 ClosedXML 访问该单元格时,我得到0.

sheet.Cell(22, 5).GetValue<double>(); // = 0

相同的

sheet.Cell(22, 5).CachedValue
sheet.Cell(22, 5).Value
sheet.Cell(22, 5).GetString()

ETC...

我可以在调试时看到该sheet.Cell(22, 5).InnerText属性是正确的,尽管我不知道如何在不调试时访问它。

任何时候都不会抛出异常。

为什么 ClosedXML 没有返回正确的值?

标签: c#excelclosedxml

解决方案


我发现尝试使用某种.GetValue<T>()方法访问单元格将起作用或将值归零,以便随后尝试通过其他方式访问它的尝试不成功。如果,而不是曾经使用.GetValue<T>(),你只使用

 double.TryParse(sheet.Cell(row, col).CachedValue.ToString(), out var valueOfInterst);

它更可靠。


推荐阅读