读书人

Jxl读取Excel资料

发布时间: 2012-10-30 16:13:35 作者: rapoo

Jxl读取Excel文件

前不久,自己写了一个Jxl读取Excel文件的,支持多张sheet的结构。

要使用,自己去下载jxl这个jar包,具体的作用在文件中有说明。

package lzb.utls.io;import java.io.FileInputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.WorkbookSettings;/** * Jxl目前只支持Excel 2003版本 * 支持Excel的多表读数据 * @author lizhenbin * */public class JxlUtil {/** * 读取路径下的Excel文件 * @param excelfilePath 文件路径 * @return Excel的全部信息包装再一个list * @throws Exception */public static List<String> readExcel(String excelfilePath) throws Exception {InputStream ins = new FileInputStream(excelfilePath); //读取xls文件WorkbookSettings setEncode = new WorkbookSettings(); //设置读文件编码setEncode.setEncoding("GBK");Workbook rwb = Workbook.getWorkbook(ins, setEncode);List<String> alldata = new ArrayList<String>();alldata.clear();Sheet[] sheets=rwb.getSheets();//获得当前Excel表共有几个sheetint pages = sheets.length; //获得表数//将excel表中的数据读取出来//在从Excel中读取数据的时候不需要知道每个sheet有几行,有那多少列for(int i=0; i<pages; i++) {Sheet sheet = rwb.getSheet(i);int cols = sheet.getColumns(); //列for(int j=0; j<cols; j++) {Cell excelColumn = sheet.getCell(j, 0);String strColumn = excelColumn.getContents(); //获得列信息alldata.add(strColumn); }//读取每一行对应的列数目//循环读取每一行的全部列数目的内容int rows = sheet.getRows();  //行for(int r=1; r<rows; r++) {  //行循环,Excel的行列是从(0,0)开始for(int c=0; c<cols; c++) {  //列循Cell excelRows = sheet.getCell(c, r);String strRow = excelRows.getContents();alldata.add(strRow);}}}                                ins.close();return alldata;}/** * 获取Excel列数List * @param excelfilePath * @return * @throws Exception */public List<Integer> getCols(String excelfilePath) throws Exception {List<Integer> colslist = new ArrayList<Integer>();InputStream ins = new FileInputStream(excelfilePath); //读取xls文件WorkbookSettings setEncode = new WorkbookSettings(); //设置读文件编码setEncode.setEncoding("GBK");Workbook rwb = Workbook.getWorkbook(ins, setEncode);Sheet[] sheets = rwb.getSheets();//获得当前Excel表共有几个sheetint pages = sheets.length; //获得表数for(int i=0; i<pages; i++) {Sheet sheet = rwb.getSheet(i);colslist.add(sheet.getColumns()); //列}                                ins.close();return colslist;}/** * 获取Excel行数List * @param excelfilePath * @return * @throws Exception */public List<Integer> getRows(String excelfilePath) throws Exception {List<Integer> rowslist = new ArrayList<Integer>();InputStream ins = new FileInputStream(excelfilePath); //读取xls文件WorkbookSettings setEncode = new WorkbookSettings(); //设置读文件编码setEncode.setEncoding("GBK");Workbook rwb = Workbook.getWorkbook(ins, setEncode);Sheet[] sheets = rwb.getSheets();//获得当前Excel表共有几个sheetint pages = sheets.length; //获得表数for(int i=0; i<pages; i++) {Sheet sheet = rwb.getSheet(i);rowslist.add(sheet.getRows());  //行}                                ins.close();return rowslist;}}

?

后面的用Jxl构建一张Excel的表格时候,我总是跳不出要传一个实实在在POJO过来的想法,现在还在构思之中,亲各位高手指正。

读书人网 >编程

热点推荐