Java 如何在ApachePOI中读取excel文件的精确单元格内容
当我读取单元格的内容时,例如,如果它是日期格式,它将转换为另一个值,如12/31/2099->46052和$50.00->50和50.00%->0.5 但我想要的是得到每个单元格的精确字符串值 我的代码如下:Java 如何在ApachePOI中读取excel文件的精确单元格内容,java,excel,apache-poi,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(); 我不会在阅读时尝试更改数据类型 相反,我会尝试 首先获取单元格类型 然后对每种数据类型使用适当的getter方法 例如:
cell.setCellType(Cell.CELL_TYPE_STRING);
String str = cell.getStringCellValue();
我不会在阅读时尝试更改数据类型 相反,我会尝试
- 首先获取单元格类型
- 然后对每种数据类型使用适当的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.
}
无需显式格式化,
apachepoi
提供了类作为实用程序,以利用excel上显示的内容格式。您也可以选择自定义格式,一个简单的示例是(单元格引用您的XSSFCell
对象):
Excel工作表如下所示:
使用DataFormatter
(上面的sop语句)打印:
正常格式将打印的位置:
0.5
1200.0
21-Dec-2014
我想处理所有单元格类型,如货币、ssn等。我认为DateUtil只用于处理DateType单元格,你是对的。问题是“货币”之类的东西是数字格式和excel单元格的特定样式的组合;您需要微调数字案例条目,以便分离您拥有的每个案例,并生成您的readTx数字的精确表示,这正是我所需要的。不知道单元格内部使用不同的格式类型
50%
$ 1,200
12/21/14
0.5
1200.0
21-Dec-2014