文档章节

java读取excel文件

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

码上生花,ECharts 作品展示赛正式启动!>>>

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
哈尔滨
程序员
私信 提问
加载中
请先登录后再评论。

暂无文章

向您推荐Groove BizTalk Workspace!

什么是Groove Office Groove 2007 是一个协作软件程序,适合用于处理从简单的文档协作到与业务过程集成的自定义解决方案的各种项目活动。 Office Groove 2007 的以下十大方式可帮助您和您的团...

osc_o8ipcpa5
3分钟前
7
0
【我的Android进阶之旅】你可能不知道android.view.View#setAlpha()方法也会影响你的APP性能!

一、问题描述 最近在优化APP的性能的时候,发现了一个平时完全没有注意到的一个能够影响APP性能的代码。这个代码就是调用了android.view.View#setAlpha()方法。 1.1 需求描述 APP有个需求,是...

osc_y08db3kb
4分钟前
15
0
lsof命令详解

lsof命令详解 lsof 简介 lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境中一切皆文件,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制...

osc_htns3spg
5分钟前
4
0
设置非root账号不用sudo直接执行docker命令

环境信息 操作系统:Ubuntu 20.04 LTS 桌面版 Docker:19.03.10 现状 当前账号是willzhao,直接执行docker xxx命令会报以下错误: willzhao@ideapad:~$ docker imagesGot permission denie...

osc_kl6fknqf
6分钟前
8
0
小米净水器更换滤芯步骤和水龙头亮黄灯的解决办法

【开篇序言】 众所周知,无论何种品牌的净水器,滤芯都是有一定使用寿命的,而不是一次性安装可永久使用,如果遇到无需换滤芯这类宣布,请远离,不靠谱。换滤芯,小米净水器也不例外,小米净...

osc_zzg7fpke
7分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部