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

时间:2014-02-07 09:57:23

标签: java excel apache-poi

当我读取单元格的内容时,例如如果它是日期格式,它会转换成另一个值,如12/31/2099 - > 46052和$ 50.00 - > 50和50.00% - > 0.5。

但我想要的是获取每个单元格的确切字符串值。

我的代码是这样的:

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

2 个答案:

答案 0 :(得分:4)

无需显式格式化,apache-poi提供DataFormatter类作为实用程序,以利用excel上显示的内容的格式。您也可以选择自定义格式,一个简单的例子就是(单元格是对XSSFCell对象的引用):

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

Excel工作表看起来像:

enter image description here

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

50%
$ 1,200
12/21/14

将打印正常格式:

0.5
1200.0
21-Dec-2014

答案 1 :(得分:0)

我在阅读时不会尝试更改数据类型。

而不是那样,我会尝试

  • 首先获取单元格类型
  • 然后对每种数据类型使用适当的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.
}