Sorry, that one is pretty important; here's the previous two statements before the if:
case HSSFCell.CELL_TYPE_NUMERIC :
double d = cell.getNumericCellValue();
For your other question:
...should those clauses actually be ANDed or ORed? i.e. do
all the terms have to be true for a cell to be a date, or just one of them...
I'm not sure, to tell you the truth. I know I needed all three conditions to
determine a valid date - I had many values return true for the first two conditions
though they weren't really dates.
-matt
-----Original Message-----
From: Bigwood, David [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 24, 2004 3:55 PM
To: POI Users List
Subject: RE: Date Cell Recognition
Oh and one more thing where does the variable d come from in:
HSSFDateUtil.isValidExcelDate(d) &&
> -----Original Message-----
> From: Matt Puccini [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 24, 2004 5:47 PM
> To: POI Users List
> Subject: RE: Date Cell Recognition
>
>
> David,
>
> I had some trouble with that too. I am using the usermodel,
> and my solution may be a bit clunky, but it worked for me. Here it is:
>
> HSSFCell cell = row.getCell((short)c);
> //...
> if (HSSFDateUtil.isCellDateFormatted(cell) &&
> HSSFDateUtil.isValidExcelDate(d) &&
> isDateFormat(cell)) {
> //...
> }
> //...
>
> /**
> * Tests to see if a cell format is recognized as a date format.
> * Strangely, the HSSFCellStyle.getDataFormat() function will
> * sometimes return values that aren't valid indexes in the
> * HSSFDataFormat.getBuiltinFormat() function - thus the catch
> * ArrayIndexOutOfBoundsException. I had some dates return an
> * index of 164, which I hard-coded into the catch clause. Make
> * sure it doesn't miss other valid date formats because of this.
> */
>
> private boolean isDateFormat(HSSFCell hCell) {
> try {
> String formatString =
>
> HSSFDataFormat.getBuiltinFormat(hCell.getCellStyle().getDataFormat());
> if(formatString.equals("m/d/yy") ||
> formatString.equals("d-mmm-yy") ||
> formatString.equals("d-mmm") ||
> formatString.equals("mmm-yy") ||
> formatString.equals("m/d/yy h:mm")) {
> return true;
> }
> }
> catch (ArrayIndexOutOfBoundsException ex) {
> /* a bit of hard code - I don't know why, but sometimes
> * valid dates are returning with an index of 164...
> * Anyone knows why please let me know.
> */
> if(hCell.getCellStyle().getDataFormat() == 164) {
> return true;
> }
> return false;
> }
> return false;
> }
>
> -----Original Message-----
> From: Bigwood, David [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 24, 2004 3:30 PM
> To: POI Users List
> Subject: Date Cell Recognition
>
>
> Has anybody successfully managed to recognize a date cell and
> differentiate
> it from a numeric cell for either:
>
> 1. eventmodel
> 2. usermodel
>
> And would they care to contribute a code snippet. I cannot
> figure out how to
> do it reliably with the eventmodel and the method used in the
> usermodel (see
> below) always returns false even even when cell is date formatted.
>
> boolean isDate = HSSFDateUtil.isCellDateFormatted(cell);
>
> Any insight you may have would be great.
>
> -DAB
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]