java读取Excel里面的内容包括(xls和xlsx)后缀文件

java通过POI架包(HSSFWorkbook和XSSFWorkbook)读取Excel里面的内容包括(xls和xlsx)后缀文件

在我们平时的开发的过程,难免会遇到需要读取Excel文件,Excel文件又分为xls和xlsx文件,这篇文章通过POI中的HSSFWorkbook和XSSFWorkbook来读取Excel文件

POI版本的问题

poi-3.16.jar
poi-examples-3.16.jar
poi-excelant-3.16.jar
poi-ooxml-3.16.jar
poi-ooxml-schemas-3.16.jar
poi-scratchpad-3.16.jar

目前POI的最新发布版本是3.10_FINAL.该版本保护的jar包有:

在这里插入图片描述

很多人都困惑POI那么多Jar到底应该导入哪一个。

实际上很多时候我们只利用POI来操作Excel。甚至只用xls这一种格式。

那么就没有必要全部都导入了。具体应该使用哪个JAR包请参考以下内容:

在这里插入图片描述

当我们只要使用xls格式时、只要导入poi-version-yyyymmdd.jar就可以了。

当我们还要使用xlsx格式、还要导入poi-ooxml-version-yyyymmdd.jar。

至于poi-ooxml-schemas-version-yyyymmdd.jar这个jar基本不太会用到的。

当我们需要操作word、ppt、viso、outlook等时需要用到poi-scratchpad-version-yyyymmdd.jar。

直接上代码

读取excel中,xlsx后缀的文件

//读取excel中,xlsx后缀的文件
	public static List<String> searchExcelXlsx(String fileUrl){
		List<String> list = new ArrayList<>();
		// 用流的方式先读取到你想要的excel的文件
		FileInputStream fis;
		try {
			fis = new FileInputStream(new File(request.getSession().getServletContext().getRealPath(fileUrl)));
			// 获取整个excel
			XSSFWorkbook hb = new XSSFWorkbook(fis);
			System.out.println(hb.getNumCellStyles());
			// 获取第一个表单sheet
			Sheet sheet = hb.getSheetAt(0);
			// 获取第一行
			int firstrow = sheet.getFirstRowNum();
			// 获取最后一行
			int lastrow = sheet.getLastRowNum();
			// 循环行数依次获取列数
			for (int i = firstrow; i < lastrow + 1; i++) {
				// 获取哪一行i
				Row row = sheet.getRow(i);
				if (row != null) {
					// 获取这一行的第一列
					int firstcell = row.getFirstCellNum();
					// 获取这一行的最后一列
					int lastcell = row.getLastCellNum();
					// 创建一个集合,用处将每一行的每一列数据都存入集合中
					for (int j = firstcell; j < lastcell; j++) {
						// 获取第j列
						Cell cell = row.getCell(j);
						if (cell != null) {
							//System.out.print("--->"+cell);
							list.add(cell.toString());
						}
					}
				}
			}
			return list;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

只需要传一个文件路径,就可以直接读取,读取是一行一行的,读取出来的内容有序的存放在List集合中

//读取读取excel中,xls后缀的文件

//读取读取excel中,xls后缀的文件
public static List<String> searchExcelXls(String fileUrl){
		List<String> list = new ArrayList<>();
		// 用流的方式先读取到你想要的excel的文件
		try {
			// 解析excel
			POIFSFileSystem pSystem = new POIFSFileSystem(new FileInputStream(request.getSession().getServletContext().getRealPath(fileUrl)));
			// 获取整个excel
			HSSFWorkbook hb = new HSSFWorkbook(pSystem);
			System.out.println(hb.getNumCellStyles());
			// 获取第一个表单sheet
			HSSFSheet sheet = hb.getSheetAt(0);
			// 获取第一行
			int firstrow = sheet.getFirstRowNum();
			// 获取最后一行
			int lastrow = sheet.getLastRowNum();
			// 循环行数依次获取列数
			for (int i = firstrow; i < lastrow + 1; i++) {
				// 获取哪一行i
				HSSFRow row = sheet.getRow(i);
				if (row != null) {
					// 获取这一行的第一列
					int firstcell = row.getFirstCellNum();
					// 获取这一行的最后一列
					int lastcell = row.getLastCellNum();
					//将每一行的每一列数据都存入集合中
					for (int j = firstcell; j < lastcell; j++) {
						// 获取第j列
						HSSFCell cell = row.getCell(j);
						if (cell != null) {
							//System.out.print("---->"+cell+"\n" );
						}
						list.add(cell.toString());
					}
				}
			}
			return list;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

这个也是只需要传一个文件路径,就可以直接读取,读取是一行一行的,读取出来的内容有序的存放在List集合中

亲测有效

最后附上架包路径

百度网盘:https://pan.baidu.com/s/1Y4BLto_mEUkS7Xhx1GJmzA
提取码:vor5

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值