2016-05-31 5 views
0

Datei Ich glaube, ich habe alle JAR-Dateien Ich brauche, und ich bin immer noch einen Fehler erhalten, die durch verursacht sagt:Java Lesen eine Excel

java.lang.reflect.InvocationTargetException

Und vergib mir, ich bin immer noch nicht wunderbar darin, Fehlermeldungen zu lesen. Der Fehler deutet darauf hin, das Problem mit der Leitung "Workbook book = new XSSFWorkbook(stream);"

import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.IOException; 
    import java.util.Iterator; 

    import org.apache.poi.ss.usermodel.Cell; 
    import org.apache.poi.ss.usermodel.Row; 
    import org.apache.poi.ss.usermodel.Sheet; 
    import org.apache.poi.ss.usermodel.Workbook; 
    import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

    public class excelReader { 
public static void main(String[] args) throws IOException{ 

    String spreadSheetFilePath = "C:\\Users\\userExample\\Documents\\forJava.xlsx"; 
    FileInputStream stream = new FileInputStream(new File(spreadSheetFilePath)); 

    Workbook book = new XSSFWorkbook(stream); 
    Sheet sheetOne = book.getSheetAt(0); 
    Iterator<Row> iterator = sheetOne.iterator(); 

    while(iterator.hasNext()) { 
     Row nextRow = iterator.next(); 
     Iterator<Cell> cellIter = nextRow.cellIterator(); 

     while(cellIter.hasNext()) { 
     Cell cell = cellIter.next(); 

     switch (cell.getCellType()) { 
     case Cell.CELL_TYPE_STRING: 
      System.out.print(cell.getStringCellValue()); 
      break; 
     case Cell.CELL_TYPE_BOOLEAN: 
      System.out.print(cell.getBooleanCellValue()); 
      break; 
     case Cell.CELL_TYPE_NUMERIC: 
      System.out.print(cell.getNumericCellValue()); 
      break; 
     } 
     System.out.print(" - "); 
     } 
     System.out.println(); 
    } 
    book.close(); 
    stream.close(); 
} 

}

Fehler ich erhalte

Exception in thread "main" org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException 
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:65) 
at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:601) 
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:174) 
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:279) 
at excelReader.main(excelReader.java:18) 
Caused by: java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at org.apache.poi.xssf.usermodel.XSSFFactory.createDocumentPart(XSSFFactory.java:56) 
at org.apache.poi.POIXMLFactory.createDocumentPart(POIXMLFactory.java:62) 
... 4 more 
Caused by: java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setLoadEntityBytesLimit(I)Lorg/apache/xmlbeans/XmlOptions; 
at org.apache.poi.POIXMLTypeLoader.<clinit>(POIXMLTypeLoader.java:50) 
at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:85) 
... 10 more 

Jar-Dateien in meiner Bibliothek für das Projekt:

commons- codec-1.10.jar
commons-logging1-2.jar
dom4j-1.1.jar
junit-4.1.2.17.jar
poi-3.14-20160307.jar
poi-excelant-3.14-20160307.jar
poi-OOXML-schemas-3.14-20160307.jar
poi-Scratchpad-3.14-20160307.jar
XMLBeans-2.3.0.jar

+1

... die Spannung steigt :-) Was ** ist ** die eigentliche Trace/Fehlermeldung? Vielleicht ist jemand hier gut darin, es zu lesen ... – Dilettant

+0

Der Fragebereich ist besser für Rückverfolgung geeignet. Erlaubt mehr Zeichen und Linien bleiben Linien – Dilettant

+0

Sie sind willkommen, keine Notwendigkeit zu entschuldigen. Es sollte einen Bearbeitungslink in der Nähe Ihrer Frage geben. Kommentare haben das zusätzliche Problem, dass Sie sie nicht länger als fünf Minuten nach der Erstellung bearbeiten können. – Dilettant

Antwort

0

Wenn man sich die Stacktrace schauen, können Sie feststellen, dass die Ausnahme von verursacht:

java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setLoadEntityBytesLimit(I)Lorg/apache/xmlbeans/XmlOptions; 

basiert darauf, dass Ich glaube, Sie brauchen das: XMLBeans-xmlpublic-2.6.0.jar in Ihrem Classpath, versuchen Sie diese zusätzliche jar in den Klassenpfad hinzuzufügen, und versuchen Sie es erneut ...

Ich schlage vor, die Abhängigkeit mit Maven zu verwalten , das vereinfacht alles, wechseln Sie einfach zu maven und fügen Sie die folgenden Zeilen zu Ihrer Pom-Datei hinzu:

<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi</artifactId> 
    <version>3.14</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-ooxml</artifactId> 
    <version>3.14</version> 
</dependency> 
+0

Ich habe den Klassenpfad mit dieser JAR-Datei aktualisiert, aber das Problem wurde nicht behoben. – Sam

+0

Aktualisieren Sie die xmlbeans-xmlpublic zu 2.6.0 – aleroot

+0

Es war die letzte JAR-Datei "Aktualisieren Sie die Xmlbeans-Xmlpublic 2.6.0" - Aleroot. Danke Ihnen allen für Ihre Hilfe – Sam