2015年3月10日 星期二

apache poi 3.2 xls date

在做xls時,難免都會用到日期的時候~
因為個人不太喜歡預設的表示式,所以常常都故意寫出時用字串來表示~
不過~夜路走多了還是會碰到鬼一.一|||...
總之~整理一下xls上關於日期的用法~~

註明,這是poi 3.2的版本,因為在3.6後,使用的method有更動~我看用法是差不多,但是method取用的object改了~

在之前,首先要了解,日期在CELL裡的型別是  HSSFCell.CELL_TYPE_NUMERIC ,是數字型態。
而讓它在XLS上能正常以日期顯示是因為 DataFormat (儲存格格式)的關係,預設是 yyyy/m/d


read XLS Date:
        HSSFCell cell = ....;
        if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)  {
            Date st10 = readCellDate(cell);
        }


write XLS Date:
先制定特定的CellStyle,不知道format字串的話,可以用XLS內的儲存格格式點開找範例跟試用~特別聲明民國年顯示用法為("[$-404]e/m/d")
        cellDateROC = workbook.createCellStyle();
        cellDateROC.cloneStyleFrom(cellBorderLeft);
        cellDateROC.setDataFormat( workbook.createDataFormat().getFormat("[$-404]e/m/d"));
       
        cellDate = workbook.createCellStyle();
        cellDate.cloneStyleFrom(cellBorderLeft);
        cellDate.setDataFormat( workbook.createDataFormat().getFormat("yyyy/m/d"));

產生XLS cell
                    cell.setCellStyle(cellDateROC());
                    cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
                    cell.setCellValue( new Date() );

當初一定要寫成日期格式是因為,有公式要用到就只好認了@@~

沒有留言: