2011-06-24 206 views
4

我有問題以正確格式使用apache poi獲取日期3.7 根據文檔,我必須使用DataFormatter中的formatCellValue方法。 在這裏,我找到了一些建議相同的答案,但它不工作。Apache POI日期dd.MM.yyyy

Excel的字段顯示格式dd.MM.yyyy日期:爲前:09.06.2010

使用formatCellValue(電池單元),我得到10年9月6日之後。 我嘗試DataFormatter和HSSFDataFormatter有和沒有Local.German或Local.German

這裏是我的代碼:

if(DateUtil.isCellDateFormatted(cell)) 
{ 
    HSSFDataFormatter formatter = new HSSFDataFormatter(Locale.GERMAN); 
    String temp = formatter.formatCellValue(cell); 
    System.out.println(temp); 
} 

有人可以幫助我嗎?

+0

「format dd-MM-yyyy:for ex:09.06.2010」 - 這沒有意義,因爲格式字符串和示例日期不兼容!你真正使用什麼格式的字符串? – Gagravarr

+0

哦對不起, 我用dd.MM.yyyy – Rafael

回答

2

我不確定,但我認爲這個問題可能是因爲你重寫了其中一個默認日期格式的格式字符串。

這隻在POI 3.8 beta 1(請參閱changelog)中得到修復,所以我建議您嘗試升級到3.8 beta3,並且希望能解決您的問題。之前的POI只是假定默認格式不會被更改,所以會使用默認格式字符串。

+0

謝謝你的回答。 POI 3.8 beta 3的更新沒有幫助。 我檢查了excel中列的格式。該類型爲dd.MM.yyyy,但標有星號,意味着該格式取決於操作系統的區域信息。也許這可能是原因。 – Rafael

+0

也許嘗試明確設置它呢? – Gagravarr

+0

有沒有人解決過這個問題呢?正在閱讀的Excel不在我們的控制範圍內。因此如果使用astrriks(*)如上指定日期格式,則默認爲OS級別語言環境。有沒有辦法可以覆蓋DataFormater採取我們自己的格式? –