public static void setCellValueAsDate(Cell cell, Date date, boolean dateStart1904) {

        ArgUtils.notNull(cell, "cell");
        ArgUtils.notNull(date, "date");

        if(dateStart1904) {
            // 1904年始まりの場合は、そのまま設定する
            cell.setCellValue(date);

        } else {

            long timemills = date.getTime();
            if(timemills <= MILLISECONDS_19000101_END) {
                // 1900年1月0日の場合は、数値に変換してから設定する
                // タイムゾーンを除去する
                Date strip = new Date(date.getTime() + TimeZone.getDefault().getRawOffset());
                double num = ExcelDateUtils.convertExcelNumber(strip, dateStart1904);
                cell.setCellValue(num);

            } else {
                cell.setCellValue(date);
            }

        }

    }
public static void setCellValueAsDate ( Cell cell , Date date , boolean dateStart1904 ) { ArgUtils . notNull ( cell , "cell" ) ; ArgUtils . notNull ( date , "date" ) ; if ( dateStart1904 ) { cell . setCellValue ( date ) ; } else { long timemills = date . getTime ( ) ; if ( timemills <= MILLISECONDS_19000101_END ) { Date strip = new Date ( date . getTime ( ) + TimeZone . getDefault ( ) . getRawOffset ( ) ) ; double num = ExcelDateUtils . convertExcelNumber ( strip , dateStart1904 ) ; cell . setCellValue ( num ) ; } else { cell . setCellValue ( date ) ; } } }
セルに日時を設定する。
<p>1900年1月0日となる経過時間指定の場合は、POIのバグにより設定できあいため、数値として設定する。</p>

@param cell 設定するセル
@param date セルに設定する日時
@param dateStart1904 1904年始まりの設定のシートかどうか