我使用Apache POI 3.9 XLS / XLSX文件处理。
在XLS片,有包含“3000053406”数值的列。
当我用POI读吧..
cell.getNumericCellValue()
它给了我价值,如“3.00E + 08”。 这在我的应用创造巨大的问题。
如何设置数量,同时在Apcahe POI读取数据格式化?
有一种方法,我知道是设置列“文本”类型。 但我想知道是否有任何其他方式在Apache的POI一边读取数据。 或者可以通过我们使用简单的Java DecimalFormatter格式化?
这一次出现非常频繁....
采摘我的过去的一个答案,以几乎相同的问题
你想要做的是使用DataFormatter类 。 你通过这一个细胞,它会尽力回报你什么包含Excel中会告诉你该小区的字符串。 如果你传递一个字符串单元格,你会得到的字符串返回。 如果你通过它与格式规则数字小区中应用,它会格式化基于它们的数量,并给你的字符串返回。
对于你的情况,我会假设数字单元应用了整数格式规则。 如果你问DataFormatter格式化这些细胞,它会给你回在它的整数字符串的字符串。
问题就可以严格与Java相关的,不相关的POI,太。 由于您的调用返回了一倍,
double val = cell.getNumericCellValue();
您可能希望得到这个
DecimalFormat df = new DecimalFormat("#"); int fractionalDigits = 2; // say 2 df.setMaximumFractionDigits(fractionalDigits); double val = df.format(val);
long varA = new Double(cellB1.getNumericCellValue()).longValue();
这将在变量的精确值varA
。