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)建一個(gè)list 用來(lái)存儲(chǔ)讀取的內(nèi)容 List list = new ArrayList(); Workbook rwb = null; Cell cell = null; //創(chuàng)建輸入流 InputStream stream = new FileInputStream(excelFileName); //獲取Excel文件對(duì)象 rwb = Workbook.getWorkbook(stream); //獲取文件的指定工作表 默認(rèn)的第一個(gè) Sheet sheet = rwb.getSheet(0); //行數(shù)(表頭的目錄不需要,從1開始) for(int i=1; i<sheet.getRows(); i++){ //創(chuàng)建一個(gè)數(shù)組 用來(lái)存儲(chǔ)每一列的值 String[] str = new String[sheet.getColumns()]; //列數(shù) 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/技術(shù)匯總.xls"); } catch (BiffException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
另外:報(bào)這個(gè)錯(cuò)的時(shí)候 :jxl.read.biff.BiffException: Unable to recognize OLE stream 主要是因?yàn)椋?.EXCEL版本不對(duì),用2003的,不要用2007的 2.用EXCEL建立建立的文件不會(huì)出現(xiàn)這個(gè)問(wèn)題了。 原因:你手工建立一個(gè)文件,并給它命名,給它后綴名,電腦可以識(shí)別是因?yàn)槟愕碾娔X裝了OFFICE 里面的EXCEL。 但是在JAVA程序中并不知道你是EXCEL文件,所以被認(rèn)為不能識(shí)別的。如果你的電腦沒(méi)裝EXCEL你再建立個(gè)文件再改名為exce的后綴名的話,你的電腦也不會(huì)識(shí)別是什么文件的。。你打開絕對(duì)是亂碼。 3.excel導(dǎo)出來(lái)的時(shí)候沒(méi)有用jxl和POI等庫(kù),所以導(dǎo)出來(lái)的文件不是標(biāo)準(zhǔn)的excel, 解決方法是:將原來(lái)的excel里的數(shù)據(jù)全部復(fù)制到另一個(gè)新建的標(biāo)準(zhǔn)的excel里,這就是一個(gè)標(biāo)準(zhǔn)的excel文件。這時(shí)在向數(shù)據(jù)庫(kù)里導(dǎo)時(shí)。OK,成功通過(guò)!
|