簡體   English   中英

JExcelAPI - 將日期寫入Excel工作表會忽略日,月和年

[英]JExcelAPI - writing date to Excel sheet ignores day, month and year

我嘗試使用JExcelAPI(v.2.6.3)在Java應用程序中生成一些Excel工作表,並且無法正確生成日期單元格。 例如,對於代碼:

WritableWorkbook workbook = null;
    workbook = Workbook.createWorkbook(new File("C:\\tmp\\tests.xls"));
    try {
        Date date = new Date();
        final WritableSheet sheet = workbook.createSheet("Sheet", 0);
        DateTime dateTime = new DateTime(0, 0, date);
        sheet.addCell(dateTime);
        System.out.println("Date1 is " + date);
        final Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, 2007);
        cal.set(Calendar.MONTH, Calendar.OCTOBER);
        cal.set(Calendar.DAY_OF_MONTH, 17);
        cal.set(Calendar.HOUR_OF_DAY, 8);
        cal.set(Calendar.MINUTE, 15);
        date = cal.getTime();
        dateTime = new DateTime(0, 1, date);
        sheet.addCell(dateTime);
        System.out.println("My birthday is on " + date);
    } finally {
        workbook.write();
        workbook.close();
    }

輸出(在控制台上)是:
Date1是星期一08月11日11:14:45 GMT + 01:00 2009
我的生日是10月17日星期三08:15:45 GMT + 01:00 2007

在Excel文件中,單元格是
1900-01-00 10:14:46
1900-01-00 07:15:46

Excel中的時間部分更正為UTC,並丟棄日期部分。 雖然參考文獻提到了時區問題,但它沒有提到丟棄日期。 我究竟做錯了什么?

好。 我想通了。 創建DateFormat

DateFormat customDateFormat = new DateFormat ("dd MMM yyyy hh:mm:ss");
WritableCellFormat dateFormat = new WritableCellFormat (customDateFormat); 

並將其傳遞給DateTime構造函數

DateTime dateTime = new DateTime(0, 0, date, dateFormat);

解決它。 似乎默認只采用時間部分。 對不起我的傻瓜。

POI不是我推薦的答案。 JExcel可以管理它。 我沒有看到你在那個單元格上設置類型的位置。 看看DateFormats

如果您使用的是Excel,問題也是一樣的。 如果在沒有設置該格式的單元格中輸入日期,則會出現意外行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM