|
... but for Time fields we should use a different approach.
Excel cannot handle time alone, it converts the time
to a datetime format, so if we had, say, 12:01:00 PM
HSSF converts that into java.sql.time, 12/31/1899
12:01:00 using
double excelDate = HSSFDateUtil.getExcelDate((Time)cellValue);
theCell.setCellValue(excelDate);
Since HSSF does not handle dates prior to 1/1/1900 it
puts a bad date (-1).
Therefore convert the time to string and setting the
time format.
....
D usrFmtTime S 24 Inz('h:mm:ss')
....
// ... Time
when SQLTYPE = 388 or SQLTYPE = 389;
....
setCellValStr(cell:tstring); // set cell value
setCellStyle(cell:styleTime); // set to time
....
----- Original Message -----
From: "Beppe Costagliola" <beppecosta@xxxxxxxx>
To: "RPG programming on the AS400 / iSeries" <rpg400-l@xxxxxxxxxxxx>
Sent: Friday, March 11, 2005 1:10 PM
Subject: Re: Dates in POI Sql2Xls
Bob,
you can try to modify the sql2xls to handle dates in this way:
* Style (date m/d/yy ) ----------------------------------------------
D styleDate S O Class(*JAVA
D :'org.apache.poi.hssf.usermodel-
D .HSSFCellStyle')
D usrFmtDate S 24 Inz('m/d/yy')
D styleFmtDate S 5I 0
D Cell_Date S D
D Xls_StartDate S D inz(d'1900-01-01')
// create Date Style
styleDate = createCellStyle(wb);
// create a DataFormatter, a User Format and set the Style for Date
df = createDataFormat(wb);
usrformat = createString(usrFmtDate);
usrformat = trimString(usrformat);
stylefmtDate = getFormat(df:usrformat);
setDataFormat(styleDate:stylefmtDate);
// ... Date
when SQLTYPE = 384 or SQLTYPE = 385;
Cell_Alfa = *blanks;
Cpybla(%addr(Cell_Alfa): SQLDATA: 10);
if Cell_Alfa = *blanks and not wrt0cell;
// do nothing
else;
cell = createCell(row:c-1);
Cell_Date = %date(Cell_Alfa:*DMY);
setCellType(cell:0); // type 0=Numeric
cell_int = %diff(Cell_Date:Xls_StartDate:*D) + 2;
setCellValNum(cell:Cell_Int);
setCellStyle(cell:styleDate); // set to date
Endif;
Regards.
--
This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.