2016-07-13 1 views
-1

Ich habe eine große Excel-Datei und ich fand, dass sjxlsx-Bibliothek eine gute für das Lesen meiner Datei ist (wegen der Lesegeschwindigkeit).Java Excel Datei lesen Datum Spalte mit sjxlsx

Ich habe ein Problem und kann keine Lösung finden. Wenn ich versuche, auf eine Zelle, die Datumsformat in Excel-Datei haben, getValue() erhalten, erhalten Sie eine Zahl bei der Antwort, ist aber nicht mit Daten aus der Excel-Datei Datum verwandt.

In Excel-Datei habe ich Datum im Format: m/d/Y. Doing cell.getValue() - gibt eine Zahl zurück, die nicht mit dem Datum zusammenhängt.

Wie kann ich mein Problem beheben? Gibt es eine weitere gute Java-Bibliothek zum Parsen von Excel-Dateien?

Hier ist der Code, den ich aus Excel-Datei, um zu lesen (ich bin sicher, dass meine Datumsspalte ist B):

SimpleXLSXWorkbook workbook = new SimpleXLSXWorkbook(companiesFileResource.getFile()); 
    HSSFWorkbook hsfWorkbook = new HSSFWorkbook(); 
org.apache.poi.ss.usermodel.Sheet hsfSheet = hsfWorkbook.createSheet(); 
    com.incesoft.tools.excel.xlsx.Sheet sheetToRead = workbook.getSheet(0, false); 
    com.incesoft.tools.excel.xlsx.Sheet.SheetRowReader reader = sheetToRead.newReader(); 

    System.out.println("Preparing to start saving data"); 
    com.incesoft.tools.excel.xlsx.Cell[] row; 
    int rowPos = 0; 
    while ((row = reader.readRow()) != null) { 
     if(row[0].getValue() == null) continue; 

     SimpleDateFormat dateFormat = new SimpleDateFormat("m/d/Y"); 
     try { 
      System.out.println("DATE: " + row[1].toString()); 
      companie.setRegisterDate(dateFormat.parse(row[1].toString())); 
     } catch (ParseException e) { 

     } 

Antwort

0

Versuchen Sie nicht, den Wert zu analysieren, ist es nicht der formatierte numerische Wert Sie sehen in Excel, dass POI liest. Verwenden Sie die DateUtils

if (DateUtil.isCellDateFormatted(row[1])) { 
        System.out.println(row[1].getDateCellValue()); 

Weitere https://poi.apache.org/spreadsheet/quick-guide.html

+0

Leider gibt es in Ich habe keine Methode getDateCellValue() sjxlsx – daniftodi

+0

Bummer HSSFWorkbook mich dazu gebracht zu glauben, dass Sie POI auch verwendet, – Kennet