2017-07-07 6 views
1

Ich lese Excel-Datei 3.16 hier Apache Poi mit meinem Codewarum diese Ausnahme ist immer: Exception in thread "main" org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException

try 
     { 
      String excelPath = "C:\\Users\\wecme\\Desktop\\AccountStatement.xls"; 
      FileInputStream fileInputStream = new FileInputStream(new File(excelPath)); 

      // Create Workbook instance holding .xls file 
      XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); 

      // Get the first worksheet 
      XSSFSheet sheet = workbook.getSheetAt(0); 

      // Iterate through each rows 
      java.util.Iterator<Row> rowIterator = sheet.iterator(); 

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

       // Iterating through Each column of Each Row 
       java.util.Iterator<Cell> cellIterator = row.cellIterator(); 

       while (cellIterator.hasNext()) 
       { 

        Cell cell = cellIterator.next(); 

        // Checking the cell format 
        switch (cell.getCellType()) 
        { 
        case Cell.CELL_TYPE_NUMERIC: 
         System.out.print(cell.getNumericCellValue() + "\t"); 
         break; 
        case Cell.CELL_TYPE_STRING: 
         System.out.print(cell.getStringCellValue() + "\t"); 
         break; 
        case Cell.CELL_TYPE_BOOLEAN: 
         System.out.print(cell.getBooleanCellValue() + "\t"); 
         break; 


        } 
       } 
       System.out.println(""); 
      } 

     } catch (IOException ie) 
     { 
      ie.printStackTrace(); 
     } 

mein Excel-Daten Aussehen wie folgt aus:

Datetime Description TransactionId Credit Amount Debit Amount Remaining OdAmount EnteredBy Remarks 
1/6/2017 8:14 IDEA (9542010237) COMMISSION GLGHQN 0.31 0 2721.92 0 iNHYD0390437LO IDEA COMMISSION 

, wenn ich andere Datei zu lesen, die ihre Lese richtig Zeit mit Datum hat, nicht aber, wenn ich versuche, diese Datei, diese Ausnahme zu lesen kommenden

Exception in thread "main" org.apache.poi.openxml4j.exceptions.NotOfficeXmlFileException: No valid entries or contents found, this is not a valid OOXML (Office Open XML) file 
at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:286) 
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:758) 
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:327) 
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) 
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:291) 
at excelRead.ReadExcel.main(ReadExcel.java:27) 

bitte helfen Sie mir, danke.

+0

'NotOfficeXmlFileException' - es eine xlsx ist erwartet, keine xls. –

+0

Ich bin nicht völlig vertraut mit dem Lesen von Excel-Dateien, aber haben Sie versucht, es in das neuere .xlsx-Format zu konvertieren? Es ist nur eine Ahnung, also könnte ich mich irren. –

+0

aber ich habe xls und ich möchte es nicht mit xlsx resinieren, wie kann ich das erreichen? –

Antwort

1

Sie erstellen eine XSSFWorkbook, die nur für die Arbeit an xlsx-Dateien geeignet ist, d. H. Das neue xml-basierte Office-Format. Ihre Dateierweiterung (xls) schlägt jedoch vor, dass dies das ältere Microsoft Office (2003 ich denke) Format ist. Um den Fehler zu beheben, müssen Sie die Datei-Format konvertieren xlsx oder müssen Sie mit einem HSSFWorkbook

Sie einige Beispiele hier über HSSF finden arbeiten: https://poi.apache.org/spreadsheet/examples.html#hssf-only Einige Beispiele über XDDF sind hier zu finden: https://poi.apache.org/spreadsheet/examples.html#xssf-only

0

nach dem Code, wo die Ausnahme ausgelöst wird (siehe: https://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java?view=markup#l286)

Und auch der Name des Pakets (openxml4j) ist es erforderlich, dass die Dateien in einem kompatiblen Format openxml sind. (d. h. xlsx)

In Ihrem Fall kann die Bibliothek die Datei nicht öffnen, da sie nicht im ZIP-Format geöffnet werden kann.

Diese Frage hat sich auch vor zwei Monaten gefragt, vielleicht ist dies auch hilfreich:

How to fix NotOfficeXmlFileException in java Apache POI?

+0

Gut das Q & A, das Sie verbunden haben, hat keine nützlichen Antworten, so bezweifle ich, dass es hilfreich sein wird. –

+0

Ich dachte, dass der Aspekt, dass der Benutzer auf der anderen Frage diesen Fehler bekommt, immer noch eine korrekte xslx-Datei verwendet, kann nützlich sein, herauszufinden, was hier passiert. – Chris

Verwandte Themen