如何阅读apache POI中excel文件的确切单元格内容

当我阅读单元格的内容,例如,如果它是date格式,它将转换为另一个值,如12/31/2099 – > 46052和$ 50.00 – > 50和50.00% – > 0.5。

但是我想要的是为每个单元格获取确切的string值。

我的代码是这样的:

cell.setCellType(Cell.CELL_TYPE_STRING); String str = cell.getStringCellValue(); 

不需要明确的格式化, apache-poi提供了DataFormatter类作为实用工具来利用excel中显示的内容格式。 你也可以select自定义格式,一个简单的例子就是(单元格是对你的XSSFCell对象的引用):

 System.out.println(new DataFormatter().formatCellValue(cell)); 

Excel表格如下所示:

在这里输入图像描述

使用DataFormatter (上面的sop语句)打印:

 50% $ 1,200 12/21/14 

在正常的格式打印的地方:

 0.5 1200.0 21-Dec-2014 

我在阅读时不会尝试和改变数据types。

相反,我会尽力

  • 首先获取细胞types
  • 然后对每种数据types使用适当的getter方法

例如:

 // Let's say you have prepared a DecimalFormat yourNumberFormatter and a // DateFormat yourDateFormatter with the format that is appropiate to your // presentation Cell cell = ...; String value = null; switch (cell.getCellType()) { case Cell.TYPE_NUMERIC: // Date format if ( DateUtil.isCellDateFormatted(cell) ) { value = yourDateFormatter.format(cell.getDateCellValue()); } else { value = yourNumberFormatter.format(cell.getNumericCellValue()); } break; case Cell.TYPE_STRING: value = cell.getStringCellValue(); break; // Etc. }