`
lizhenbin2010
  • 浏览: 99949 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Jxl读取Excel文件

    博客分类:
  • J2se
 
阅读更多

前不久,自己写了一个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表共有几个sheet
		int 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表共有几个sheet
		int 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表共有几个sheet
		int 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过来的想法,现在还在构思之中,亲各位高手指正。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics