如何阅读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. }