0

我在读取 excel 文件并通过 apache poi 3.9 对其进行分析时遇到问题...我添加了外部 JAR 文件,但它仍然给我错误。这是我的代码

import java.io.File;
import java.io.FileInputStream;

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 loop {
     public static void main(String [] args) throws Exception
     {
         File excel= new File("C:\\Users\\songSent.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=cellToString(cell);

                data[i][j]=value;
                System.out.println("the value is " +value);
             }
         }
    }
    public static String cellToString(XSSFCell cell)
    {
        int type;
        Object result;
        type=cell.getCellType();

        switch (type){

        case 0:
          result=cell.getNumericCellValue();
          break;
        case 1:
          result=cell.getStringCellValue();
          break;
        default:
            throw new RuntimeException("There no support");

        }
        return result.toString();
     }
  }

这些是我运行程序时的错误

Exception in thread "main" java.lang.NoClassDefFoundError:org/apache/poi/hssf/usermodel/HSSFCell
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by:     java.lang.ClassNotFoundException:org.apache.poi.hssf.usermodel.HSSFCell
at java.net.URLClassLoader$1.run(Unknown Source)
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)
... 6 more
4

2 回答 2

3

从堆栈跟踪中可以清楚地看出您的程序无法找到“poi” jar。检查您的类路径是否设置正确,如果您从 Eclipse(或其他 IDE)运行,请检查 jar 是否已添加到构建路径中。

于 2013-10-05T19:52:24.750 回答
0

在运行时,您至少缺少一些Apache POI jars。具体来说,您缺少主要的 poi jar(例如poi-3.10-beta2-20130904.jar),很可能还有其他一些。

首先,您需要记住,对于 Java,您的 jars 需要在编译时运行时都可用。仅在编译时将 jar 放在类路径中是不够的,您还需要在运行时将它们放在类路径中!

其次,您需要确保包含适用于您正在使用的 POI 组件的 Apache POI jar,以及这些组件所具有的任何依赖项。所有这些都记录在Apache POI 组件页面上,该页面解释了哪些 Jars 包含哪些组件,以及这些组件具有哪些依赖项。

(由于您使用的是 XSSF,这意味着您需要主 poi jar、poi-ooxml jar、poi-ooxml-schemas jar 及其依赖项)

于 2013-10-05T21:31:07.733 回答