Java 如何使用POI解析excel文件中的自定义列

Java 如何使用POI解析excel文件中的自定义列,java,apache-poi,Java,Apache Poi,我需要解析一个excel文件,该文件以自定义格式存储日期时间(mm/dd/yyyy hh:mm:ss)。当我检查单元格类型时,它指示一个数值,但我无法检索该值。它正在显示以下异常 java.lang.IllegalStateException: Cannot get a numeric value from a text cell at org.apache.poi.hssf.usermodel.HSSFCell.typeMismatch(HSSFCell.java:648) a

我需要解析一个excel文件,该文件以自定义格式存储日期时间(mm/dd/yyyy hh:mm:ss)。当我检查单元格类型时,它指示一个数值,但我无法检索该值。它正在显示以下异常

java.lang.IllegalStateException: Cannot get a numeric value from a text cell
    at org.apache.poi.hssf.usermodel.HSSFCell.typeMismatch(HSSFCell.java:648)
    at org.apache.poi.hssf.usermodel.HSSFCell.getNumericCellValue(HSSFCell.java:673)
当我尝试使用“cell.getDateCellValue()”将值读取为日期时,也会得到相同的异常

java.lang.IllegalStateException: Cannot get a numeric value from a text cell
    at org.apache.poi.hssf.usermodel.HSSFCell.typeMismatch(HSSFCell.java:648)
    at org.apache.poi.hssf.usermodel.HSSFCell.getNumericCellValue(HSSFCell.java:673)
如果我试图以字符串的形式检索该值,那么异常情况正好相反


你知道怎么做吗?

我对apache poi也有类似的问题

我的建议是:

1) 强制单元格为text
cell.setCellType(CELLTYPESTRING)

2) 读取字符串值
cell.getStringCellValue()

3) 您可以做一些事情来将字符串解析为有意义的数据


希望这有帮助。ApachePOI有它的局限性,所以有时候你不得不像那样破解它

你确定它真的是一个日期单元格吗?这个异常使它听起来像是一个字符串,而不是键入日期+格式化它。(2010年1月1日
和2010年1月1日
之间的区别-注意第二个开头的
'
)可能是我不清楚。单元格包含的信息是日期时间,但单元格类型是自定义的。您查看了吗?只是他们很清楚,在很多情况下,这不是一个明智的选择……我不确定@Ben的建议是否正确,但它对我起了作用。但是在解析数据之后,我需要做一些奇怪的数据操作,将解析的信息转换成有用的数据。同样有效!