2013-08-16 36 views
5

Tôi đang cố gắng đọc tệp từ tệp .xlsx bằng java. Nhưng tôi vẫn gặp lỗi. Tôi đã sửa chữa số HSSF thành XSSF để có thể đọc phiên bản Excel cũ trong năm 2007. Mã bị treo khi khởi tạo sổ làm việc. Đây là mã:Đọc từ tệp excel .xlsx bằng cách sử dụng java Apache POI 3.9 Eclipse

package excelread; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.IOException; 
import org.apache.poi.xssf.usermodel.XSSFCell; 
import org.apache.poi.xssf.usermodel.XSSFRow; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

public class ReadExcel { 

    /** 
    * @param args 
    * @throws IOException 
    */ 
    public static void main(String[] args) throws IOException { 
     // TODO Auto-generated method stub 
     File excel = new File ("C:/Users/Leah-Dina/Desktop/LogFile.xlsx"); 
     FileInputStream fis = new FileInputStream(excel); 
     XSSFWorkbook wb = new XSSFWorkbook(fis); 
     XSSFSheet ws = wb.getSheet("Input"); 

     int rowNum = ws.getLastRowNum() + 1; 
     int colNum = ws.getRow(0).getLastCellNum(); 
     String [][] data = new String [rowNum] [colNum]; 

     for(int i = 0; i <rowNum; i++){ 
      XSSFRow row = ws.getRow(i); 
       for (int j = 0; j < colNum; j++){ 
        XSSFCell cell = row.getCell(j); 
        String value = cell.toString(); 
        data[i][j] = value; 
        System.out.println ("the value is " + value); 
       } 
     } 

    } 
} 

đây bạn có thể thấy thông báo lỗi tôi nhận được: Có vẻ như tất cả mọi thứ được nhập khẩu và tôi không có ý tưởng whats sai.

Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentException 
     at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:154) 
     at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:141) 
     at org.apache.poi.openxml4j.opc.Package.<init>(Package.java:54) 
     at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:82) 
     at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:267) 
     at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39) 
     at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:204) 
     at excelread.ReadExcel.main(ReadExcel.java:21) 
    Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 8 more 

Trả lời

10

Trước tiên, hãy đảm bảo rằng tất cả thư viện mà Apache POI phụ thuộc vào trên đường dẫn lớp của bạn. Trong trường hợp này, bạn chắc chắn thiếu Dom4J (dom4j-1.6.1.jar). Có thể bạn đang thiếu các thư viện khác, chẳng hạn như stax-api-1.0.1.jar, xmlbeans-2.3.0.jar và poi-ooxml-schemas-3.9.jar. Tất cả các thư viện cần thiết được bao gồm trong bản phân phối có thể tải xuống từ Apache POI website.

dòng 21 dường như là dòng này:

XSSFWorkbook wb = new XSSFWorkbook(fis); 

Vì vậy, có thể có một vấn đề với bảng tính của bạn. Đặt Dom4J trên đường dẫn lớp của bạn sẽ chỉ cho phép tạo DocumentException, nhưng hy vọng điều đó sẽ cho bạn biết điều gì thực sự sai với bảng tính của bạn (nếu có).

+0

Cảm ơn bạn, tôi thực sự đã mất tích một số thư viện. Tôi không nhận ra rằng họ đang ở trong các thư mục khác nhau. Nó đã giúp cho đến nay. Thanx)) – Jenny

0

chỉ cần dán các thư viện poi của bạn vào thư mục web-inf lib nếu bạn đang làm việc trong nhật thực IDE.

2

Bạn nên bao gồm dom4j-1.6.1.jar tập tin