2013-02-21 70 views
1

當我使用POI寫出日期時,我也會在Excel中看到時間。 (顯示的時間是單元格寫入時我的機器上的時間)。 這是我已經使用使用POI寫日期(沒有時間)

XSSFCellStyle dateStyle = wb.createCellStyle(); 
CreationHelper createHelper = wb.getCreationHelper(); 
dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("dd-mmm-yyyy")); 
Calendar cal = Calendar.getInstance(); 
cal.set(xx.getYear(), xx.getMonthOfYear(), xx.getDayOfMonth()); 
cell.setCellStyle(dateStyle); 
cell.setCellValue(cal); 

在單元中的日期是否正確即12日 - 12月2013,但該小區的代碼,在公式欄中,時間也顯示。所以細胞顯示12-Dec-2013和公式欄顯示12-Dec-2013 7:14:39 AM。我在excel中檢查了單元格的格式,它顯示爲自定義dd-mm-yyyy,這正是我所期望的。 太清楚了 - 細胞本身顯示12-12-2012,但對於配方欄中的細胞,時間也顯示出來。 我也用日期替換了日曆 - 同樣的問題。

Addl info:在excel中,我將col的格式更改爲'general' - 對於通過POI添加的單元格,我看到值爲xxx.xxx,如41319.3769490278,而當我只輸入日期這個值看起來像41319.它看起來像小數點後的數字導致時間顯示。不知道如何避免這種情況時,我用POI寫出來

+0

您創建的dateStyle格式僅應用於單元格,當您執行'cell.setCellStyle(dateStyle);因此,此格式僅適用於單元格,而不適用於公式欄。我不確定您是否可以通過POI API – 2013-02-21 14:21:12

回答

5

好的解決了。把它放在那些遇到同樣問題的其他人。 我查看了POI源代碼,並意識到從日曆中計算出double,並將單元格值設置爲該值。從評論中可以明顯看出,小數點後的數字代表時間。所以我在我的代碼中做的是截斷這個double。改變的行在下面的代碼片段中註釋。

XSSFCellStyle dateStyle = wb.createCellStyle(); 
CreationHelper createHelper = wb.getCreationHelper(); 
dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("dd-mmm-yyyy")); 
Calendar cal = Calendar.getInstance(); 
cal.set(xx.getYear(), xx.getMonthOfYear(), xx.getDayOfMonth()); 
cell.setCellStyle(dateStyle); 
double d = DateUtil.getExcelDate(cal, false); //get double value f 
cell.setCellValue((int)d); //get int value of the double 
+0

完美!非常感謝,一直在尋找解決方案! – NinaNa 2014-03-20 06:44:46

2

你不能完全清除你得到從日期的日曆中的實例,這就是爲什麼時間通過

未來您還需要設置時間值爲零,所以你的代碼會想看起來像這樣:

Calendar cal = Calendar.getInstance(); 
cal.set(xx.getYear(), xx.getMonthOfYear(), xx.getDayOfMonth()); 
calendar.set(Calendar.HOUR, 0); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND, 0); 
calendar.set(Calendar.MILLISECOND, 0); 
+0

更改公式欄格式感謝Gagravarr。我按照你的建議做了 - 將時間字段設置爲0 - 但無濟於事 - 時間仍顯示在配方欄中,只不過現在時間顯示爲12:00:00 PM。 – user1578364 2013-02-21 11:25:40

+1

我想知道您是否需要HOUR_OF_DAY而不是HOUR--這取決於您的區域設置 – Gagravarr 2013-02-21 11:29:12

相關問題