|
package com.cctchina.rbac.action.user; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class ImportUser { public static List readExcel(String excelFileName) throws BiffException, IOException{ //創(chuàng)建一個list 用來存儲讀取的內容 List list = new ArrayList(); Workbook rwb = null; Cell cell = null; //創(chuàng)建輸入流 InputStream stream = new FileInputStream(excelFileName); //獲取Excel文件對象 rwb = Workbook.getWorkbook(stream); //獲取文件的指定工作表 默認的第一個 Sheet sheet = rwb.getSheet(0); //行數(表頭的目錄不需要,從1開始) for(int i=1; i<sheet.getRows(); i++){ //創(chuàng)建一個數組 用來存儲每一列的值 String[] str = new String[sheet.getColumns()]; //列數 for(int j=0; j<sheet.getColumns(); j++){ //獲取第i行,第j列的值 cell = sheet.getCell(j,i); str[j] = cell.getContents(); } //把剛獲取的列存入list list.add(str); } //返回值集合 return list; } public static void main(String[] args) { try { readExcel("I:/Users/Administrator/Desktop/技術匯總.xls"); } catch (BiffException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
另外:報這個錯的時候 :jxl.read.biff.BiffException: Unable to recognize OLE stream 主要是因為:1.EXCEL版本不對,用2003的,不要用2007的 2.用EXCEL建立建立的文件不會出現這個問題了。 原因:你手工建立一個文件,并給它命名,給它后綴名,電腦可以識別是因為你的電腦裝了OFFICE 里面的EXCEL。 但是在JAVA程序中并不知道你是EXCEL文件,所以被認為不能識別的。如果你的電腦沒裝EXCEL你再建立個文件再改名為exce的后綴名的話,你的電腦也不會識別是什么文件的。。你打開絕對是亂碼。 3.excel導出來的時候沒有用jxl和POI等庫,所以導出來的文件不是標準的excel, 解決方法是:將原來的excel里的數據全部復制到另一個新建的標準的excel里,這就是一個標準的excel文件。這時在向數據庫里導時。OK,成功通過!
|