所有数字都从Apache POI单元格值返回为Double。
当我执行getCell(...).toString()
时,Excel中显示为“123”的数字将转换为“123.0”。
如何判断该数字是否应显示为整数?我是否需要在Java中应用一些魔法来复制Excel对“常规”格式化的作用?
答案 0 :(得分:20)
Excel将文件格式中的几乎所有数字都存储为浮点值,这就是为什么POI会为数字单元格返回一个双倍的原因
我相信,虽然从你的问题中不太清楚,你想要做的是在Java中获取一个包含Excel中的数字的String对象?即将应用于单元格的格式规则应用于原始数字,并返回格式化的字符串?
如果是这样,你想做同样的事情as in my answer here。引用:
您要做的是使用DataFormatter class。你传递了一个单元格,它会尽力返回一个字符串,其中包含Excel为该单元格显示的内容。如果你传递一个字符串单元格,你将得到回来的字符串。如果您传递了一个应用了格式规则的数字单元格,它将根据它们格式化数字并返回字符串。
对于您的情况,我假设数字单元格应用了整数格式规则。如果你要求DataFormatter格式化这些单元格,它会返回一个包含整数字符串的字符串。
编辑对于那些显然找到clicking through to the JavaDocs to be just that little bit too much work...的人,您需要使用DataFormatter.formatCellValue(Cell)方法。如果迭代,你会做以下几点:
Workbook workbook = WorkbookFactory.create(new File("input.xlsx"));
DataFormatter formatter = new DataFormatter();
Sheet s = workbook.getSheetAt(0);
for (Row r : s) {
for (Cell c : r) {
System.out.println(formatter.formatCellValue(c));
}
}
答案 1 :(得分:-1)
sort