I think I understand what you're getting at.  But you're
conceptualization is incorrect.  HSSF isn't based on the GUI its based
on a reasonable conceptualization of the file format.  

You don't HAVE a date in the file format.  you have an integer which
happens to have a format assigned to it.  

To understand do this:

Go into Excel.  Pick a cell and assign a normal date format. (right
click and pick a date format)  

Type in a date.

Now right click and reset the format to general.

You'll see a plain old integer.

For HSSF:

You assign an integer and then a format or you read an integer and then
a format.  The HSSF representation is correct.  If you'd like to wrap
the API with a conceptualization based on your conceptualization of what
the GUI does, be my guest...but HSSF isn't wrong here...just this is an
area where the stupidity of the file format bleeds to the top.  We try
and hide nastiness, but things like "Excel has no date type" can't be
completely hidden, nor should we try.  

Its up to the user of the API to wrap it in his own conceptualization. 
Create your own subclass or wrapper the makes it like the GUI if that's
your wish.

-Andy

On Fri, 2002-05-03 at 10:36, Agarwal, Vinay (Cognizant) wrote:
> So that i dont have to worry about its format...just show me what's showing
> on the excel sheet.
> 
> -----Original Message-----
> From: Glen Stampoultzis [mailto:[EMAIL PROTECTED]]
> Sent: Friday, May 03, 2002 6:21 PM
> To: [EMAIL PROTECTED]
> Subject: Re: Dates!!
> 
> 
> 
> No, why would you say that?
> 
> ----- Original Message -----
> From: "Agarwal, Vinay (Cognizant)" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Friday, May 03, 2002 9:08 PM
> Subject: RE: Dates!!
> 
> 
> > If its a custom format then shudn't it be
> > of type 'HSSFCell.CELL_TYPE_STRING'.
> >
> > -----Original Message-----
> > From: Glen Stampoultzis [mailto:[EMAIL PROTECTED]]
> > Sent: Friday, May 03, 2002 4:20 PM
> > To: [EMAIL PROTECTED]
> > Subject: Re: Dates!!
> >
> >
> > 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.
> > > >
> > > >
> > >
> > >
> > >
> >
> >
> 
-- 
http://www.superlinksoftware.com
http://jakarta.apache.org/poi - port of Excel/Word/OLE 2 Compound
Document 
                            format to java
http://developer.java.sun.com/developer/bugParade/bugs/4487555.html 
                        - fix java generics!
The avalanche has already started. It is too late for the pebbles to
vote.
-Ambassador Kosh

Reply via email to