文档章节

java读取excel文件

vapy
 vapy
发布于 2016/05/15 22:29
字数 447
阅读 38
收藏 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
哈尔滨
程序员

暂无文章

java序列化(七) - fst 序列化

java序列化(七) - fst 序列化 github https://github.com/RuedigerMoeller/fast-serialization 实践 https://gitee.com/mengzhang6/serializable-demo.git maven依赖 <!-- https://mvnrepo......

晨猫
16分钟前
2
0
智力问题汇总

南京新建地铁线路,给你2块钱,测出来需要配置多少辆车? 参考答案:根据地铁有固定时间间隔,坐一圈该线路,推算出需要多少辆。 一共50张卡片,上面写着1--50 ,50个数字,藏起来一张,打乱...

职业搬砖工程师
20分钟前
1
0
ZFS-自我恢复RAID

ZFS-自我恢复RAID 这个给了我一个简单而又强大的理由,让我立马为之折服,ZFS可以自动的检测发生的错误,而且,可以自我修复这些错误。假设有一个时刻,磁盘阵列中的数据是错误的,不管是什么...

openthings
29分钟前
2
0
从Hash到一致性Hash原理(深度好文)

要讲一致性Hash原理,先从一般性Hash讲起,其实Hash的本质就是一个长度可变的数组,那为什么Hash的时间复杂度是O(1),而其他类型的数据结构查找都是要遍历来,遍历去,即便是树,二叉树,也是要经过几...

算法之名
42分钟前
17
0
软件测试工具书籍与面试题汇总下载(持续更新)

简介 本文是https://github.com/china-testing/python-api-tesing/blob/master/books.md 的节选。 欢迎转载,转载请附带此简介,谢谢! 试题 软件测试综合面试题(高级测试)-试题.pdf 软件测试...

python测试开发人工智能安全
50分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部