我正在使用Apache POI来检索单元格双精度值:
1.以openxml格式存储的单元格的实际值为“5.259761432023309”,2 . 同一单元格的格式化显示值为“5.26%” . 3.但是,在MS Excel公式栏上显示的值是“5.25976143202331%”
使用Apache POI,我能够检索:
值1,使用cell.getNumericValue();
我也能够使用DataFormatter df = new DataFormatter(); String asItLooksInExcel = df.formatCellValue(cell)检索值2;
但是,我无法检索值3,这是公式栏上显示的值,plz建议检索相同的方法 .
2 回答
我无法确认您的观察结果 .
如果我有以下Excel:
正如您在
A1
中看到的5.25976143202331%
. 它是德语Excel
所以小数分隔符是逗号 . 但那没关系 .那里
XML
是:以下代码
导致:
所以
5.2597614320233098E-2
是直接来自XML
的值 .0.052597614320233098
是该值为BigDecimal
. 根据IEEE floating point,0.0525976143202331
是该值为浮点double
.5.26%
是格式化为Excel
中显示的值 .5.25976143202331%
是Excel
公式栏中显示的值 . 百分比值是一种特殊情况,因为Excel
也在公式栏中显示%
格式,但完全计算有效数字(最多15个) .带有
%
值的异常是因为Excel
中的%
格式不仅是格式化,而且还是值的更改 .1
=100%
. 因此,如果将100%
放在Excel
单元格中,则会存储值1
. 如果将10%
放在Excel
单元格中,则会存储值0.1
.如果是 Aspose.Cells API ,请使用以下示例Excel文件测试给定的示例代码 . 另请参阅其图像和控制台输出 .
所有这些都解释了Aspose.Cells API以真正的精度准确地检索单元格A1值 .
Sample Code
Console Output
Note: 我在Aspose担任开发人员传播者