XSSF POI is cell date

14,895

Solution 1

If you're using the XSSF UserModel, then you want DateUtil.isCellDateFormatted(Cell) - this will return a boolean telling you if the format string for the cell represents a data or not.

If you're down at the low level XML stuff, you need DateUtil.isADateFormat(int,String) instead. The style ID comes from the cell xml. The style string you'll have to get out of the styles table, which is a different Package Part. There are helpers for loading that though

You probably want to look at XSSFExcelExtractorDecorator from Tika for an example of doing the latter - it does formatting of cells from an event parsing.

Solution 2

cell.getCellTypeEnum() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)

Share:
14,895

Related videos on Youtube

Zemzela
Author by

Zemzela

Updated on June 08, 2022

Comments

  • Zemzela
    Zemzela about 2 years

    Is there a way to determine if cell is a date? I know about style.getDataFormatString() but that doesn't help me, because I can't determine if is formating is for date or not.

  • Zemzela
    Zemzela almost 13 years
    I'm actually copy/paste mail-archives.apache.org/mod_mbox/poi-user/200905.mbox/… and try to modify it. Yes I did see that possibility but don't know how to retrieve Cell.
  • Gagravarr
    Gagravarr almost 13 years
    Are you using XSSF usermodel, or doing event model raw XML stuff?
  • araknoid
    araknoid almost 7 years
    Why are you checking if the CellType is Numeric if the question is related to Date cell?
  • Evan Thomas
    Evan Thomas almost 7 years
    when you use DateUtil.isCellDateFormatted(cell), but the CellType is String, it will appear "java.lang.IllegalStateException: Cannot get a NUMERIC value from a STRING cell" @araknoid
  • araknoid
    araknoid almost 7 years
    You should add this details to the answer and explain it a bit because as it is written, It's not a self-explaining answer