我的错在哪里?

时间:2013-10-05 19:39:55

标签: java excel data-structures apache-poi

我在阅读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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

首先,您需要记住,使用Java时,您的jar需要在运行时在编译时 。在编译时只在jar类上使用jar是不够的,你还需要在运行时将它们放在类路径上!

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

(因为你正在使用XSSF,这意味着你需要主要的poi jar,poi-ooxml jar,poi-ooxml-schemas jar和他们的dependencies