2012-04-20 35 views
2

我寫了一些代碼來從xls提取數據並將它們保存到csv中。除了當我有時間價值時,一切都很好,它正在改變它的日期。我怎樣才能避免這種情況? 例如,如果在xls文件中它是119:22:00,它將以格式類型作爲日期以1/4/1900 23:23格式保存到csv文件中。我怎樣才能保持它與格式爲字符串的方式?java excel提取器的問題

下面是代碼:

if (sheet != null) 
{ 
    for (currentRow = 0; currentRow < sheet.getRows(); currentRow++) 
    { 
     row = new ArrayList<String>(); 
     Cell[] rowCells = sheet.getRow(currentRow); 
     for (Cell cell : rowCells) 
     { 
      System.out.println(cell.getContents()); 
     } 
    } 
} 
+4

您必須向我們顯示您的代碼,以便我們爲您提供幫助。 – 2012-04-20 15:48:27

+0

好的我在上面添加了它。 – Wael 2012-04-20 15:59:19

回答

0

你需要得到Excel.Cell.Text而非Excel.Cell.Value看到格式化的值。顯然,你提取的是價值。根據您的代碼,看起來問題將出現在cell.getContents()sheet.getRow()--無論哪個用於從excel中提取數據。你也應該發佈這些功能的內容。

Excel中日期和時間的基礎值很難處理,對初級用戶來說,它們的原始格式是沒有意義的。您可以看到基礎價值Excel將您的日期和時間轉換爲只需打開您的Excel表格並將格式臨時更改爲number。你會看到,只要你輸入日期或時間,就會將它翻譯成對用戶沒有意義的日期或時間的數字表示,因此如果你提取的是底層的值而不是格式化文本。

enter image description here

+0

我嘗試了jxl和apache的poi,並且在這兩種情況下,當單元格具有類型編號或日期時,我無法提取字符串值。我得到了演員例外。你知道如何總是字符串值,即使單元格包含數字/日期/等? – Wael 2012-04-21 07:38:10

+0

直到您發佈您的代碼後,我無法幫到您。同時告訴我你使用的是什麼API。我保證你沒有世界上的Excel API,它不會讓你獲得Cell Text而不是Cell Value。它看起來像你想要做的是在單元格上調用「ToString()」,這不是你應該做的。 – Alain 2012-04-22 12:18:22