文档章节

java读取excel文件

vapy
 vapy
发布于 2016/05/15 22:29
字数 447
阅读 35
收藏 0

1>. 先用inputstream获取excel文件的io流
2>. 然后创建一个内存中的excel文件HSSFWorkbook类型对象.这个对象表示了整个excel文件.
3>. 对这个excel文件的每页做循环处理HSSFSheet
4>. 对每页中的每行做循环处理HSSFRow
5>. 对每行中的每个单元格做做处理,获取这个单元格的值HSSFCell
6>. 把这行的结果添加到一个List数组中.
7>. 把每行的结果添加到最后的总结果中.
8>. 解析完以后就获取了一个List< List < String > > 类型的对象了.

需要用到的jar包

源码

public class ReadExcel {
	public static void main(String[] args) {
		try {
			List<List<String>> resultXls = readXls("D:/study/MyEclipse/WorkSpace/myCode/test.xls");
			for(List<String> list : resultXls){
				for(String str : list){
					System.out.print(str + "\t");
				}
				System.out.println();
			}
System.out.println("-----------------------");
			List<List<String>> resultXlsx = readXlsx("D:/study/MyEclipse/WorkSpace/myCode/test.xlsx");
			for(List<String> list : resultXlsx){
				for(String str : list){
					System.out.print(str + "\t");
				}
				System.out.println();
			}
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	//读取2003版本的xls文件
	private static List<List<String>> readXls(String path) throws IOException {
		InputStream is = new FileInputStream(path);
		//整个excel
		HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
		List<List<String>> result = new ArrayList<List<String>>();
		for (int sheet = 0, sheetNum = hssfWorkbook.getNumberOfSheets(); sheet < sheetNum; sheet++) {
			//页
			HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(sheet);
			if(null == hssfSheet)
			{
				continue;
			}
			for(int row = 0, rowNum = hssfSheet.getPhysicalNumberOfRows(); row < rowNum; row++){
				//行
				HSSFRow hssfRow = hssfSheet.getRow(row);
				int minColIx = hssfRow.getFirstCellNum();
				int maxColIx = hssfRow.getLastCellNum();
				List<String> rowList = new ArrayList<String>();
				for(int col = minColIx; col <= maxColIx; col++){
					//单元格
					HSSFCell hssfCell = hssfRow.getCell(col);
					if(null == hssfCell)
					{
						continue;
					}
					rowList.add(hssfCell.toString());
				}
				result.add(rowList);
			}
		}
		is.close();
		return result;
	}
	
	//读取2007版本的xlsx文件
	private static List<List<String>> readXlsx(String path) throws IOException {
		InputStream is = new FileInputStream(path);
		XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
		List<List<String>> result = new ArrayList<List<String>>();
		for (int sheet = 0, sheetNum = xssfWorkbook.getNumberOfSheets(); sheet < sheetNum; sheet++) {
			XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(sheet);
			if(null == xssfSheet)
			{
				continue;
			}
			for(int row = 0, rowNum = xssfSheet.getPhysicalNumberOfRows(); row < rowNum; row++){
				XSSFRow xssfRow = xssfSheet.getRow(row);
				int minColIx = xssfRow.getFirstCellNum();
				int maxColIx = xssfRow.getLastCellNum();
				List<String> rowList = new ArrayList<String>();
				for(int col = minColIx; col <= maxColIx; col++){
					XSSFCell xssfCell = xssfRow.getCell(col);
					if(null == xssfCell)
					{
						continue;
					}
					rowList.add(xssfCell.toString());
				}
				result.add(rowList);
			}
		}
		is.close();
		return result;
	}
}

 

© 著作权归作者所有

共有 人打赏支持
vapy
粉丝 0
博文 5
码字总数 2000
作品 0
哈尔滨
程序员

暂无文章

流量劫持是如何产生的?

流量劫持,这种古老的攻击沉寂了一段时间后,最近又开始闹的沸沸扬扬。众多知名品牌的路由器相继爆出存在安全漏洞,引来国内媒体纷纷报道。只要用户没改默认密码,打开一个网页甚至帖子,路由...

谢思华
23分钟前
0
0
Hadoop Client无法使用maven下载源码

最近在学习hadoop,使用maven的时候想看一下源码的注释,结果IDEA一直提示无法下载 搞得我一度以为maven坏掉了。 但是通过搜索,发现在maven仓库里确实没有源码.... 而2.8.1以及之前的版本是...

Iceberg_XTY
24分钟前
0
0
为什么程序员千万不要重写代码?

你所做的事情,也许暂时看不到成果,但不要灰心或焦虑,你不是没有成长,而是在扎根。 图片来自网络 0 前言 程序员都有一颗工程师的心,所以当他们到一片新的场地想做的第一件事就是,将旧的...

Java小铺
26分钟前
0
0
VUE集成AdminLte

1. 安装需要到插件 npm i admin-lte -Snpm i jquery -Snpm i axios -Snpm i vue-router -S 2. 配置webpack.config.js 2.1 module.exports.module.rules修改字体loader: {test: /\.(p......

Pasenger
今天
0
0
Spring Aop原理之切点表达式解析

在前面的文章(Spring AOP切点表达式详解)中,我们总结了Spring Aop切点表达式的用法,而在上文(Spring Aop原理之Advisor过滤)中我们讲到,切点表达式的解析主要是在PatternParser.parse...

爱宝贝丶
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部