Apache的POI:如何格式化数字的单元格值(Apache POI : How to format

2019-07-17 16:43发布

我使用Apache POI 3.9 XLS / XLSX文件处理。

在XLS片,有包含“3000053406”数值的列。

当我用POI读吧..

cell.getNumericCellValue()

它给了我价值,如“3.00E + 08”。 这在我的应用创造巨大的问题。

如何设置数量,同时在Apcahe POI读取数据格式化?

有一种方法,我知道是设置列“文本”类型。 但我想知道是否有任何其他方式在Apache的POI一边读取数据。 或者可以通过我们使用简单的Java DecimalFormatter格式化?

Answer 1:

这一次出现非常频繁....

采摘我的过去的一个答案,以几乎相同的问题

你想要做的是使用DataFormatter类 。 你通过这一个细胞,它会尽力回报你什么包含Excel中会告诉你该小区的字符串。 如果你传递一个字符串单元格,你会得到的字符串返回。 如果你通过它与格式规则数字小区中应用,它会格式化基于它们的数量,并给你的字符串返回。

对于你的情况,我会假设数字单元应用了整数格式规则。 如果你问DataFormatter格式化这些细胞,它会给你回在它的整数字符串的字符串。



Answer 2:

问题就可以严格与Java相关的,不相关的POI,太。 由于您的调用返回了一倍,

double val = cell.getNumericCellValue();

您可能希望得到这个

DecimalFormat df = new DecimalFormat("#"); int fractionalDigits = 2; // say 2 df.setMaximumFractionDigits(fractionalDigits); double val = df.format(val);



Answer 3:

long varA = new Double(cellB1.getNumericCellValue()).longValue(); 这将在变量的精确值varA



文章来源: Apache POI : How to format numeric cell values
标签: apache-poi