Apache POI - 将数字作为整数

wrs*_*der 12 java apache-poi

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

当我这样做时getCell(...).toString(),在Excel中显示为"123"的数字将转换为"123.0".

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

Gag*_*arr 21

Excel以文件格式存储几乎所有数字作为浮点值,这就是为什么POI会为数字单元格返回一个双重数据,因为那就是真正存在的数字单元格

我相信,虽然从你的问题中不太清楚,你想要做的是在Java中获得一个包含Excel中的数字的String对象?即将应用于单元格的格式规则应用于原始数字,并返回格式化的字符串?

如果是这样,你想要完成与我在这里的答案完全相同的事情.报价:

你想要做的是使用DataFormatter类.你传递了一个单元格,它会尽力返回一个字符串,其中包含Excel为该单元格显示的内容.如果你传递一个字符串单元格,你将得到回来的字符串.如果您传递了一个应用了格式规则的数字单元格,它将根据它们格式化数字并返回字符串.

对于您的情况,我假设数字单元格应用了整数格式规则.如果您要求DataFormatter格式化这些单元格,它将返回一个包含整数字符串的字符串.

编辑对于那些显然发现点击JavaDocs只是那么多工作的人...,你需要使用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));
  }
}
Run Code Online (Sandbox Code Playgroud)