簡體   English   中英

使用java Apache POI 3.9 Eclipse從excel文件.xlsx中讀取

[英]Read from excel file .xlsx using java Apache POI 3.9 Eclipse

我試圖使用java從.xlsx文件中讀取文件。 但我仍然會遇到錯誤。 我已經將HSSF更正為XSSF因此它能夠讀取2007版本的excel。 實例化工作簿時代碼崩潰。 這是代碼:

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);
                }
        }

    }
}

在這里你可以看到我得到的錯誤信息:似乎所有東西都是導入的,我不知道什么是錯的。

 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

首先,確保Apache POI所依賴的所有庫都在您的類路徑中。 在這種情況下,你肯定錯過了Dom4J(dom4j-1.6.1.jar)。 可能您可能缺少其他庫,例如stax-api-1.0.1.jar,xmlbeans-2.3.0.jar和poi-ooxml-schemas-3.9.jar。 所有必需的庫都包含在可從Apache POI網站下載的發行版中。

第21行似乎是這一行:

XSSFWorkbook wb = new XSSFWorkbook(fis);

因此,您的電子表格可能存在問題。 將Dom4J放在類路徑上只允許創建DocumentException ,但希望能告訴你電子表格的真正錯誤(如果有的話)。

您應該包含dom4j-1.6.1.jar文件

如果您在eclipse IDE中工作,只需將您的poi libs粘貼到您的web-inf lib目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM