2013-05-03 16 views
6

Sto cercando di leggere excel in java. Ho il seguente codice.Come leggere excel (.xlsx) in java usando poi?

import java.io.FileInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.util.Iterator; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.DateUtil; 
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 Test { 
    public static void main(String[] args) throws IOException { 
     String fname = "D:\\Test.xlsx"; // or "C:\\Test.xls" C:\\SDI-XL.xls 
     InputStream inp = new FileInputStream(fname); 
     Workbook wb = new XSSFWorkbook(inp); // Declare XSSF WorkBook 
     Sheet sheet = wb.getSheetAt(0); // sheet can be used as common for XSSF and HSSF 

     Iterator<Row> rows=sheet.rowIterator(); 
     while (rows.hasNext()) { 
      Row row = (Row) rows.next(); 
      System.out.println("row#=" + row.getRowNum() + ""); 
      Iterator cells = row.cellIterator(); 
      while (cells.hasNext()) { 
       Cell cell = (Cell) cells.next(); 

       switch (cell.getCellType()) { 
       case Cell.CELL_TYPE_STRING: 
        System.out.println(cell.getRichStringCellValue().getString()); 
        break; 
       case Cell.CELL_TYPE_NUMERIC: 
        if (DateUtil.isCellDateFormatted(cell)) { 
         System.out.println(cell.getDateCellValue() + ""); 
        } else { 
         System.out.println(cell.getNumericCellValue()); 
        } 
        break; 
       case Cell.CELL_TYPE_BOOLEAN: 
        System.out.println(cell.getBooleanCellValue() + ""); 
        break; 
       case Cell.CELL_TYPE_FORMULA: 
        System.out.println(cell.getCellFormula()); 
        break; 
       default: 
       } 
      } 
     } 
     inp.close(); 
    } 
} 

Sono stato importato il vaso poi.3.6jar e poi.ooxml-3.6. Quando eseguo questo programma ho ricevuto il seguente messaggio di errore.

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException 
    at Test.main(Test.java:16) 
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    ... 1 more 

Non capisco perché viene visualizzato questo messaggio di errore. Quindi aiutatemi.

+0

Vedi anche questo relativo [exa mple] (http://stackoverflow.com/a/3562214/230513) utilizzando [_for-each_] (http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html) loop. – trashgod

risposta

11

aggiungere il file xmlbeans-2.3.0.jar al classpath.

+0

importare quel vaso .ma ho ottenuto seguente errore msg..Exception in thread "main" java.lang.NoClassDefFoundError: org/openxmlformats/schemas/SpreadsheetML/x2006/main/CTSheet \t a Test.main (Test.java: 16) Causato da: java.lang.ClassNotFoundException: org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet – vijayk

+7

ti stai perdendo poi-ooxml-schemas.jar, per favore almeno google tali errori; il vaso è il primo colpo qui. – mabi

+1

Grazie per il vostro aiuto, ha funzionato quando ho incluso poi-ooxml-schemas.jar come suggerito da @mabi e dom4j.jar. – vijayk

11

aggiungere file jar seguente:

  • POI-3.9.jar
  • POI-OOXML-3.9.jar
  • POI-OOXML-schemas-3.7.jar
  • XMLBeans-2.3.0 .jar
  • dom4j-1.6.1.jar
+0

Sono necessari tutti i vasi precedenti per leggere/scrivere il file excel in java. Si finirà in errori di run time anche se manca un jar. –

1

Aggiungi

xmlbeans-2.3.0.jar 
dom4j-1.6.1.jar 

insieme ai normali POI XML, risolveranno sicuramente il problema.

-1

Aggiungere i seguenti barattoli e aggiungerli al classpath quindi eseguire il progetto.

  1. dom4j-1.6.1-sources.jar
  2. dom4j.jar
  3. log4j-1.2.17.jar
  4. POI-3,5-FINAL.jar
  5. POI-OOXML-3.5- beta5.jar
  6. POI-OOXML-schemas-3.9.jar
  7. XMLBeans-2.3.0.jar
+0

Secondo http://poi.apache.org/faq.html # faq-N10204 questo * non è supportato * poiché stai mixando i POI Jar tra le versioni. Inoltre, perché mai stai suggerendo a qualcuno oggi di usare vecchie versioni di POI? – Gagravarr

+0

Ho provato con tutti i jar consigliati con l'ultima versione ma non ha funzionato. Così ho provato tutti i barattoli sopra e funziona ora. –

+0

Aggiungi sotto la riga nel tuo metodo principale per non ottenere l'eccezione -> BasicConfigurator.configure(); –

Problemi correlati