2013-06-03 71 views
0

美好的一天。apache poi包含日期的單元格DataFormatter

我需要從excel文件中獲取單元格數據,因爲它們看起來像碰到DataFormatter類的apache poi。除了包含日期的單元格之外,它的作用就像魅力一樣以下是我的代碼:

while (rowIterator.hasNext()) 
{ 
    Row row = rowIterator.next(); 

    StringBuilder rowDataBuilder = new StringBuilder(); 
    int iCellCount = row.getLastCellNum(); 
    for (int i = 0; i < iCellCount; i++) 
    { 
     Cell cell = row.getCell(i, Row.CREATE_NULL_AS_BLANK); 
     rowDataBuilder.append(dataFormatter.formatCellValue(cell)); 
     rowDataBuilder.append(" | "); 
    } 

    _LOG.info("-----> row data: " + rowDataBuilder.toString()); 
} 

例如一個單元格包含5/3/2013,我只得到5/3/13。會有任何解決方案嗎?謝謝。

+0

你確定你的日期真的被設置爲'dd/mm/yyyy'格式嗎?或者他們是否使用默認的「本地化」格式之一? (測試的方法是在美國的Excel副本上打開,看看會出現什麼內容) – Gagravarr

+0

好吧,當我打開excel文件時,顯示的是d/m/yyyy,但我認爲它是dd/mm/yyyy。我不確定我是否打開美國版本。 – Oneb

回答

1

對於在獲取所需格式的日期,您可以使用下列內容:

SimpleDateFormat DtFormat = new SimpleDateFormat("dd/MM/yyyy"); 
    Date date=Test.getRow(RowNum).getCell(CellNum).getDateCellValue(); 
    System.out.println(DtFormat.format(date).toString()); 

現在,如果單元格的值是2013年5月3日,它會給O/P爲2013年5月3日。我希望這能解決你的問題。

+0

幫了很多!謝謝:)你有我的+1。 –

+0

但我有疑問。這種方式每次都無法幫助我。如果單元格包含不同的日期格式方式,並且我希望它們保持原樣?有沒有任何通用的方式來獲取日期值? – npradeep357