如何使用Apache POI将这个“奇怪的”单元格值正确地转换为Date对象以检索解析的Excel?

问题描述

尝试使用 Apache POI 从Java解析Excel时,我发疯了,我发现解析包含日期的特定列时遇到以下问题。

这是我的Excel文件中的列:

enter image description here

如您所见,此列包含日期字段,但此列的某些单元格包含数字值,另一些单元格包含 text 值(我可以使用 TYPE() Excel函数)。我真的不知道怎么可能,因为所有单元格都包含日期字段。有想法吗?

无论如何,我正在尝试以这种方式处理这种奇怪的情况:

if(currentRow.getCell(20) != null && !currentRow.getCell(20).toString().trim().isEmpty()) {
    
    if(currentRow.getCell(20).getCellType().toString().equals("STRING")) {
        System.out.println("Data sottoscrizione contratto è STRING: " + currentRow.getCell(20).toString());
        
    }
    else if(currentRow.getCell(20).getCellType().toString().equals("NUMERIC")) {
        System.out.println("Data sottoscrizione contratto è NUMERIC");
        String dateAsString = currentRow.getCell(20).toString();
        System.out.println("DATA SOTTOSCRIZIONE CONTRATTO: " + currentRow.getCell(20).toString());
        
        
    }
}

通过这种方式,我可以处理试图转换为日期的两种情况。

这是我的问题。当找到Excel数值时,请输入if NUMERIC 情况

并通过以下方式打印单元格值:

System.out.println("DATA SOTTOSCRIZIONE CONTRATTO: " + currentRow.getCell(20).toString());

我获得了与日期值 2017/10/10

相关的值 2017年6月16日

这里有一些疑问:为什么我会以这种格式获取类似 2017/10/16 的信息。

2017年6月16日应为日期的意大利语格式。如何将其转换为适当的Date对象?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)