Apache POI - 将数字作为整数

时间:2013-03-21 20:32:15

标签: java apache-poi

所有数字都从Apache POI单元格值返回为Double。

当我执行getCell(...).toString()时,Excel中显示为“123”的数字将转换为“123.0”。

如何判断该数字是否应显示为整数?我是否需要在Java中应用一些魔法来复制Excel对“常规”格式化的作用?

2 个答案:

答案 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