我正在制定一项要求,我需要验证xlsx文件记录并向最终用户显示验证。我正在使用Apache POI,问题是当一行包含一个日期单元格时(01/31/2015)在解析期间它进入数字单元格类型切换案例并给出一些意想不到的值(42005那样)。
我无法使用getDateCellValue,因为我正在将xls转换为csv并在那里进行不同的验证。因此,无论xls公式/格式如何,我都应该获得用户为我的要求准确输入的值,不仅是日期而且是所有其他类型(截至目前我发现只有日期字符串的问题)。我尝试了下面的代码,请更新我的任何其他解决方案,因为我不确定下面的代码将适用于所有情况。
if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC){
if(DateUtil.isCellDateFormatted(cell)){
DataFormatter format= new DataFormatter();
FormulaEvaluator fe = Workbook.getCreationHelper().createFormulaEvaluator();
String str= format.formatCellValue(cell, fe);
return str;
}
}
答案 0 :(得分:0)
Kiran,我相信在阅读单元格内容之前,您可以使用此cell.setCellType(Cell.CELL_TYPE_STRING);
获取有关任何单元格格式的信息。
这个答案已经回答了,但对于数字格式: How can I read numeric strings in Excel cells as string (not numbers) with Apache POI?