That was it thanks for the feedback.
Avik Sengupta wrote:
> The HSSFDateUtil.isValidExcelDate(numrec.getValue())) function just checks if
> the double number is in the correct range. To check if the cell is formatted
> with the date, check the HSSFDateUtil.isCellDateFormatted(HSSFCell cell)
> method, that checks for the formatting on the cell irrespective of the value.
>
> Quoting Bill Neumann <[EMAIL PROTECTED]>:
>
>
>>Hello,
>>
>>I would like to think the same, but the function is really only checking
>>against a double and it appears that it can be fooled into thinking that
>>the date is valid, while it is not.
>>
>>I am parsing an Excel spreadsheet and I just entered a couple fields to
>>test, one with a data and one with a number (10,000). Here is the code
>>that I check with.
>>
>>case NumberRecord.sid:
>> NumberRecord numrec = (NumberRecord) record;
>> System.out.println("number: " +
>> HSSFDateUtil.getJavaDate(numrec.getValue())
>> + "format: " + numrec.getXFIndex() + "is valid: " +
>> HSSFDateUtil.isValidExcelDate(numrec.getValue()));
>>and here is the output from it
>>
>>number: Tue Jun 28 00:00:00 EDT 1960 format: 21 is valid: true
>>number: Wed May 18 00:00:00 EDT 1927 format: 22 is valid:true //this is
>>bad line which as 10,000 in the spreadsheet.
>>
>>Bill
>>
>>
>>Jason Hoffman wrote:
>>
>>
>>>Well, as I understood it, there is no way a numeric field can pass the
>>>"isCellDateFormatted" logic unless it actually has one of the documented
>>>Date Formats as its format. If it is actually a number, I would
>>>question why IS it date formatted?
>>>I have witnessed some strangeness in Excel, where a cell is populated
>>>with a number, formatted with another format, and then changed to a date
>>>format. The cell does not actually CHANGE its display to date until
>>>someone re-enters the value into the cell. I wonder if this could be
>>>what you are seeing here?
>>>
>>>Jason Hoffman
>>>Bill Neumann wrote:
>>>
>>>
>>>>Hello,
>>>>
>>>>I have been working on the same problem and the solutions I have seen
>>>>so far do not seem to be totally valid, since a numeric field can also
>>>>be just a number and not a date and pass the test given by
>>>>isCellDateFormatted. So from what I can see there is not really a way
>>>>to validate whether a field is really a number or a date.
>>>>
>>>>Bill
>>>>Andrew C. Oliver wrote:
>>>>
>>>>
>>>>>I'd rather see an "isDateFormat") in HSSFFormat.
>>>>>
>>>>>-Andy
>>>>>
>>>>>Glen Stampoultzis wrote:
>>>>>
>>>>>
>>>>>>HSSFCell makes sense. Patch away.
>>>>>>
>>>>>>-- Glen
>>>>>>
>>>>>>----- Original Message -----
>>>>>>From: "Jason Hoffman" <[EMAIL PROTECTED]>
>>>>>>To: <[EMAIL PROTECTED]>
>>>>>>Sent: Friday, May 03, 2002 10:12 PM
>>>>>>Subject: Re: Dates!!
>>>>>>
>>>>>>
>>>>>>
>>>>>>>Glen,
>>>>>>>
>>>>>>>If this method was to be added to POI ( assuming you haven't already
>>>>>>>done it ) would you have any preference as to its location.
>>>>>>>Personally,
>>>>>>>I think it makes sense in HSSFCell, but wanted to get a blessing
>>>>>>>before
>>>>>>>creating the patch. Any thoughts?
>>>>>>>
>>>>>>>Glen Stampoultzis wrote:
>>>>>>>
>>>>>>>
>>>>>>>>Okay, I've done some investigation of this. Looks like your date
>>>>>>>>
>>has
>>
>>>>>>been
>>>>>>
>>>>>>
>>>>>>>>defined as a custom format.
>>>>>>>>
>>>>>>>>Not sure what you can do about that one. There's really nothing
>>>>>>>>there
>>>>>>>>except the format string to tell whether it's a date or not and
>>>>>>>>unfortunately the format string can take many forms.
>>>>>>>>
>>>>>>>>Regards,
>>>>>>>>
>>>>>>>>Glen
>>>>>>>>
>>>>>>>>----- Original Message -----
>>>>>>>>From: "Agarwal, Vinay (Cognizant)" <[EMAIL PROTECTED]>
>>>>>>>>To: <[EMAIL PROTECTED]>
>>>>>>>>Cc: <[EMAIL PROTECTED]>
>>>>>>>>Sent: Friday, May 03, 2002 2:46 PM
>>>>>>>>Subject: RE: Dates!!
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>>Yeah sure....
>>>>>>>>>It's fmc_sample.xls
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>-----Original Message-----
>>>>>>>>>From: Glen Stampoultzis [mailto:[EMAIL PROTECTED]]
>>>>>>>>>Sent: Friday, May 03, 2002 9:58 AM
>>>>>>>>>To: [EMAIL PROTECTED]
>>>>>>>>>Subject: Re: Dates!!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>Must be an undocumented format. Are you able to send a sample
>>>>>>>>>
>>>>>>>>>
>>>>>>>>spreadsheet?
>>>>>>>>
>>>>>>>>
>>>>>>>>>(Either to the list or [EMAIL PROTECTED] if you don't want the whole
>>>>>>>>>
>>>>>>>>>
>>>>>>world
>>>>>>
>>>>>>
>>>>>>>>>seeing your workbook).
>>>>>>>>>
>>>>>>>>>Thanks,
>>>>>>>>>
>>>>>>>>>Glen
>>>>>>>>>
>>>>>>>>>----- Original Message -----
>>>>>>>>>From: "Agarwal, Vinay (Cognizant)" <[EMAIL PROTECTED]>
>>>>>>>>>To: <[EMAIL PROTECTED]>
>>>>>>>>>Sent: Friday, May 03, 2002 2:27 PM
>>>>>>>>>Subject: RE: Dates!!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>Date format in excel looks like '01-Jan-94'
>>>>>>>>>>
>>>>>>>>>>-----Original Message-----
>>>>>>>>>>From: Glen Stampoultzis [mailto:[EMAIL PROTECTED]]
>>>>>>>>>>Sent: Friday, May 03, 2002 9:44 AM
>>>>>>>>>>To: [EMAIL PROTECTED]
>>>>>>>>>>Subject: Re: Dates!!
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>What does your date format look like in Excel?
>>>>>>>>>>
>>>>>>>>>>-- Glen
>>>>>>>>>>
>>>>>>>>>>----- Original Message -----
>>>>>>>>>>From: "Agarwal, Vinay (Cognizant)" <[EMAIL PROTECTED]>
>>>>>>>>>>To: <[EMAIL PROTECTED]>
>>>>>>>>>>Sent: Friday, May 03, 2002 2:13 PM
>>>>>>>>>>Subject: RE: Dates!!
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>It doesn't work for me......
>>>>>>>>>>>Interesting tning is when I add one more case to your list of
>>>>>>>>>>>cases
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>,it
>>>>>>>>
>>>>>>>>
>>>>>>>>>>>works.
>>>>>>>>>>>
>>>>>>>>>>>I added case 165: and it worked....
>>>>>>>>>>>
>>>>>>>>>>>Something like this...
>>>>>>>>>>>
>>>>>>>>>>>switch(i) {
>>>>>>>>>>> // Internal Date Formats as described on page 427
>>>>>>>>>>>
>>in
>>
>>>>>>>>>>>Microsoft Excel Dev's Kit...
>>>>>>>>>>> case 0x0e:
>>>>>>>>>>> case 0x0f:
>>>>>>>>>>> case 0x10:
>>>>>>>>>>> case 0x11:
>>>>>>>>>>> case 0x12:
>>>>>>>>>>> case 0x13:
>>>>>>>>>>> case 0x14:
>>>>>>>>>>> case 0x15:
>>>>>>>>>>> case 0x16:
>>>>>>>>>>> case 0x2d:
>>>>>>>>>>> case 0x2e:
>>>>>>>>>>> case 0x2f:
>>>>>>>>>>> case 165: // IT WORKS HERE IN THIS CASE
>>>>>>>>>>> bDate = true;
>>>>>>>>>>> break;
>>>>>>>>>>> default:
>>>>>>>>>>> bDate = false;
>>>>>>>>>>> break;
>>>>>>>>>>>
>>>>>>>>>>>Any answers to this......
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>-----Original Message-----
>>>>>>>>>>>From: Hoffman, Jason [mailto:[EMAIL PROTECTED]]
>>>>>>>>>>>Sent: Thursday, May 02, 2002 6:15 PM
>>>>>>>>>>>To: '[EMAIL PROTECTED]'
>>>>>>>>>>>Subject: RE: Dates!!
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>Okay, here is a little code I used to determine if the cell was a
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>number
>>>>>>>>
>>>>>>>>
>>>>>>>>>>or
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>date, and then format appropriately. I hope it helps. I keep
>>>>>>>>>>>meaning
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>to
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>>>submit a patch with the helper method below.... but just
>>>>>>>>>>>haven't had a
>>>>>>>>>>>chance.
>>>>>>>>>>>
>>>>>>>>>>>/////// code snippet ////////////
>>>>>>>>>>>case HSSFCell.CELL_TYPE_NUMERIC:
>>>>>>>>>>> double d = cell.getNumericCellValue();
>>>>>>>>>>> // test if a date!
>>>>>>>>>>> if (isCellDateFormatted(cell)) {
>>>>>>>>>>> // format in form of M/D/YY
>>>>>>>>>>> cal.setTime(HSSFDateUtil.getJavaDate(d));
>>>>>>>>>>> cellText =
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>(String.valueOf(cal.get(Calendar.YEAR))).substring(2);
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> cellText = cal.get(Calendar.MONTH)+1 + "/" +
>>>>>>>>>>> cal.get(Calendar.DAY_OF_MONTH) +
>>>>>>>>>>>"/" +
>>>>>>>>>>> cellText;
>>>>>>>>>>> }
>>>>>>>>>>>/////// end code snippet ////////////
>>>>>>>>>>>
>>>>>>>>>>>// HELPER METHOD BELOW TO DETERMINE IF DATE
>>>>>>>>>>>
>>>>>>>>>>>// method to determine if the cell is a date, versus a number...
>>>>>>>>>>>public static boolean isCellDateFormatted(HSSFCell cell) {
>>>>>>>>>>> boolean bDate = false;
>>>>>>>>>>>
>>>>>>>>>>> double d = cell.getNumericCellValue();
>>>>>>>>>>> if ( HSSFDateUtil.isValidExcelDate(d) ) {
>>>>>>>>>>> HSSFCellStyle style = cell.getCellStyle();
>>>>>>>>>>> int i = style.getDataFormat();
>>>>>>>>>>> switch(i) {
>>>>>>>>>>> // Internal Date Formats as described on page 427 in
>>>>>>>>>>>Microsoft
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>Excel
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>Dev's Kit...
>>>>>>>>>>> case 0x0e:
>>>>>>>>>>> case 0x0f:
>>>>>>>>>>> case 0x10:
>>>>>>>>>>> case 0x11:
>>>>>>>>>>> case 0x12:
>>>>>>>>>>> case 0x13:
>>>>>>>>>>> case 0x14:
>>>>>>>>>>> case 0x15:
>>>>>>>>>>> case 0x16:
>>>>>>>>>>> case 0x2d:
>>>>>>>>>>> case 0x2e:
>>>>>>>>>>> case 0x2f:
>>>>>>>>>>> bDate = true;
>>>>>>>>>>> break;
>>>>>>>>>>>
>>>>>>>>>>> default:
>>>>>>>>>>> bDate = false;
>>>>>>>>>>> break;
>>>>>>>>>>> }
>>>>>>>>>>> }
>>>>>>>>>>> return bDate;
>>>>>>>>>>>}
>>>>>>>>>>>
>>>>>>>>>>>-----Original Message-----
>>>>>>>>>>>From: Agarwal, Vinay (Cognizant)
>>>>>>>>>>>
>>[mailto:[EMAIL PROTECTED]]
>>
>>>>>>>>>>>Sent: Thursday, May 02, 2002 5:22 AM
>>>>>>>>>>>To: [EMAIL PROTECTED]
>>>>>>>>>>>Subject: Dates!!
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>Hi, I am not sure if this is a bug .
>>>>>>>>>>> I am trying to read a xls file which has a cell with Date
>>>>>>>>>>>format.
>>>>>>>>>>> I have used EventExample.java for this purpose. What is
>>>>>>>>>>>happening
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>is
>>>>>>>>
>>>>>>>>
>>>>>>>>>>>that
>>>>>>>>>>>instead of date it returns me a number. I looked at the APIs for
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>DateRecord
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>but
>>>>>>>>>>>there isn't such class. I am just wondering how to get around
>>>>>>>>>>>
>>this
>>
>>>>>>>>>>problem,I
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>am
>>>>>>>>>>>aware that Excel stores dates as numbers and probably i am
>>>>>>>>>>>
>>getting
>>
>>>>>>>>that
>>>>>>>>
>>>>>>>>
>>>>>>>>>>>number.
>>>>>>>>>>>
>>>>>>>>>>>Why dont we have DateRecord class similar to NumericRecord.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>--
>>>>To unsubscribe, e-mail:
>>>><mailto:[EMAIL PROTECTED]>
>>>>For additional commands, e-mail:
>>>><mailto:[EMAIL PROTECTED]>
>>>>
>>>>
>>
>>
>>
>>--
>>To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
>>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>>
>>
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>