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{ //创建一个list 用来存储读取的内容 List list = new ArrayList(); Workbook rwb = null; Cell cell = null; //创建输入流 InputStream stream = new FileInputStream(excelFileName); //获取Excel文件对象 rwb = Workbook.getWorkbook(stream); //获取文件的指定工作表 默认的第一个 Sheet sheet = rwb.getSheet(0); //行数(表头的目录不需要,从1开始) for(int i=1; i<sheet.getRows(); i++){ //创建一个数组 用来存储每一列的值 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,成功通过!
|