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
まず、ApachePOIが依存するすべてのライブラリがクラスパスにあることを確認してください。この場合、あなたは確かに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 Webサイト からダウンロード可能なディストリビューションに含まれています。
21行目は次の行のようです。
XSSFWorkbook wb = new XSSFWorkbook(fis);
そのため、スプレッドシートに問題がある可能性があります。 Dom4Jをクラスパスに配置すると、DocumentException
のみが作成されますが、スプレッドシートの実際の問題点がわかるといいのですが。
Dom4j-1.6.1.jarファイルを含める必要があります
eclipse IDEで作業している場合は、poiライブラリをweb-inflibディレクトリに貼り付けるだけです。