当我读取单元格的内容时,例如如果它是日期格式,它会转换成另一个值,如12/31/2099 - > 46052和$ 50.00 - > 50和50.00% - > 0.5。
但我想要的是获取每个单元格的确切字符串值。
我的代码是这样的:
cell.setCellType(Cell.CELL_TYPE_STRING);
String str = cell.getStringCellValue();
答案 0 :(得分:4)
无需显式格式化,apache-poi
提供DataFormatter
类作为实用程序,以利用excel上显示的内容的格式。您也可以选择自定义格式,一个简单的例子就是(单元格是对XSSFCell
对象的引用):
System.out.println(new DataFormatter().formatCellValue(cell));
Excel工作表看起来像:
使用DataFormatter
(上面的sop语句)打印:
50%
$ 1,200
12/21/14
将打印正常格式:
0.5
1200.0
21-Dec-2014
答案 1 :(得分:0)
我在阅读时不会尝试更改数据类型。
而不是那样,我会尝试
例如:
// 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.
}