2013-10-05 161 views
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 

回答

0

在運行時,您至少缺少一些Apache POI jars。特別是,你錯過了主要的poi jar(例如poi-3.10-beta2-20130904.jar),並且很可能還有其他一些。

首先,你需要記住,與Java,您的罐子需要提供在編譯時在運行時。僅僅在編譯時在你的類路徑上使用jar是不夠的,你仍然需要在運行時將它們放在類路徑中!

其次,你需要確保你有適當的供您使用的POI組件在Apache POI罐子,任何依賴這些構件一起。這些都記錄在Apache POI components page上,它解釋了哪些Jars擁有哪些組件,以及它們具有哪些依賴關係。

(由於您使用XSSF,這意味着你需要的主POI瓶子,POI-OOXML瓶子,POI-OOXML-模式罐子,和他們dependencies

+0

Gagravarr,首先感謝您的時間和關注。我認爲這是關於工作,但最近我買了這個另一種運行時錯誤: 異常線程「main」顯示java.lang.NullPointerException \t在loop.main(loop.java:20) :S –

+0

你會最好不要問作爲一個新問題,特定於NullPointer - 它不會是這個問題 – Gagravarr

3

它是從堆棧跟蹤你的程序是無法找到「POI」罐子很清楚。檢查您的類路徑是否設置正確&如果您正在從eclipse(或其他IDE)運行,請檢查jar是否已添加到構建路徑。

+0

我加入Eclipse項目的所有罐子>屬性>添加外部路徑 我仍然給我同樣的錯誤..我不知道最新的錯誤 –