`

解决POI中DateUtil.isCellDateFormatted(Cell cell)不能判断中文日期的问题

阅读更多
根据客户提供的Excel,在导入日期数据时,发现获得的值是一串数字。客户设置的日期格式为yyyyy年MM月,当把日期格式设置为yyyy-MM时,就能够正确读取。我们用得是POI3.6,方法:org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(Cell cell)。调用时总是返回false,经跟踪源码发现只要含有中文时间单位就不行(例如含有“年”或“月”等时间单位),故修改,增加了对中文时间单位的过滤,经测试判断正确。

方法:DateUtil.isADateFormat(int formatIndex, String formatString)
增加代码内容:
fs = fs.replaceAll("[\"|\']","").replaceAll("[年|月|日|时|分|秒|毫秒|微秒]", "");
附件为修改之后的可执行代码!
分享到:
评论
5 楼 xiang_mr 2016-05-11  
多谢啊,有时间再看源码。
4 楼 huiy 2015-05-05  
a8632935 写道
感谢楼主的经验分享,问题搞定

不客气
3 楼 a8632935 2015-04-08  
感谢楼主的经验分享,问题搞定
2 楼 huiy 2013-04-23  
zhutulang 写道
谢谢!不过你的源文件里面没有引入cell 、cellstyle,编译的时候花了我好长时间才发现。你要是直接把编译过后的class文件放进去就好了。

好的,我来添加上去。
1 楼 zhutulang 2013-04-02  
谢谢!不过你的源文件里面没有引入cell 、cellstyle,编译的时候花了我好长时间才发现。你要是直接把编译过后的class文件放进去就好了。

相关推荐

    Java读取Excel支持2003和2007

    如果POI认为单元格格式是日期,我们使用`DateUtil.isCellDateFormatted()`函数来判断并获取日期值。否则,我们假设它是一个普通的数值。 - **日期处理**:在Java中,日期通常用`java.util.Date`或`java.time....

    java读取excel

    - 使用`DateUtil.isCellDateFormatted`来判断是否为日期格式。 - 对于数字类型,如果单元格不是日期格式,则将其转换为整数形式。 ##### 4. 错误处理 ```java public String getError() { StringBuffer errorMsg ...

    SpringBoot整合poi实现Excel文件的导入和导出.pdf

    if (DateUtil.isCellDateFormatted(cell)) { // 日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(cell.getDateCellValue()); } // 数值,使用BigDecimal包装避免科学计数...

    poi-读取Excel表格内容

    if (cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) { Date date = cell.getDateCellValue(); System.out.print(date.toString() + "\t"); } else if (cell.getCellType() == ...

    POI实现excel导入导出及解析

    if (DateUtil.isCellDateFormatted(cell)) { Date date = cell.getDateCellValue(); } else { // 处理数字值 } break; // 其他类型... } ``` 五、优化和注意事项 1. 使用BufferedReader和BufferedInputStream...

    java实现Excel导入(POI)

    1. **日期和时间**:对于日期和时间类型的单元格,需要通过`DateUtil.isCellDateFormatted(Cell cell)`判断,然后使用`cell.getDateCellValue()`获取日期。 2. **样式和格式**:POI还提供了对单元格样式、字体、...

    POI解析excel

    if (DateUtil.isCellDateFormatted(cell)) { return new SimpleDateFormat("yyyy-MM-dd").format(cell.getDateCellValue()); } else { return Double.toString(cell.getNumericCellValue()); } // 其他类型的...

    poi实现表格导入插件

    if (cellType == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) { Date date = cell.getDateCellValue(); } ``` 3. 处理公式:POI也支持读取包含公式的单元格,但需注意,必须先计算公式结果才能获取...

    java操作Excel全过程带源码

    例如,对于数字单元格,应使用`cell.getNumericCellValue()`,对于日期单元格,可能需要使用`DateUtil.isCellDateFormatted(cell)`来判断并转换。 6. **高级功能** Apache POI还支持更复杂的操作,如样式设置、...

    java利用POI技术上传&导出Excel表格并保存数据至数据库

    对于日期,可以使用`DateUtil.isCellDateFormatted()`检查并转换;对于数字,可以使用`cell.getNumericCellValue()`。 3. **保存至数据库**:有了处理好的数据,接下来就是将其存入数据库。通常,我们会创建一个与...

    java读取excel文件jar包20181223

    - 处理日期:对于日期单元格,需要使用DateUtil.isCellDateFormatted(Cell cell)判断,并通过cell.getDateCellValue()获取。 4. **流式处理**: - 如果处理大型Excel文件,可以使用SXSSFWorkbook,它基于SXSSF...

    POI 入门 使用教程,参考手册

    ### POI 入门 使用教程...无论是简单的数据读写还是复杂的样式设置和数据处理,POI 都能提供相应的解决方案。希望本教程能够帮助读者快速掌握 Apache POI 的使用方法,为实际开发工作中处理 Excel 文件提供有力的支持。

    05-课程分类管理(新)_图片分类管理

    if (DateUtil.isCellDateFormatted(cell)) { return cell.getDateCellValue().toString(); } else { return String.valueOf(cell.getNumericCellValue()); } case Cell.CELL_TYPE_BOOLEAN: return String....

    POI读取Excel(新)

    POI提供了`DateUtil`类,它包含`isCellDateFormatted(Cell cell)`方法用于判断单元格是否为日期格式,`getJavaSqlDate(double excelDateValue)`或`getCalendar(double excelDateValue)`方法用于将Excel日期值转换为...

    java读取excel文件的两种方法

    if (DateUtil.isCellDateFormatted(cell)) { System.out.print(cell.getDateCellValue()); } else { System.out.print(cell.getNumericCellValue()); } System.out.print(" "); break; } } System.out....

    jxl解析EXCEl2003

    JXL提供了`DateUtil`工具类来处理这类单元格,如`DateUtil.isCellDateFormatted(cell)`判断是否为日期类型,`cell.getDateCellValue()`获取日期值。 6. **关闭资源**:完成操作后,别忘了关闭Workbook,释放系统...

Global site tag (gtag.js) - Google Analytics