java 利用poi包实现对多个excel表数据的读取和写入

本文介绍了如何在Java中使用POI库来读取和写入多个Excel表格数据。首先,通过Maven引入POI依赖,并展示了处理不同版本Excel的工作簿类。接着,详细说明了读取Excel时获取行数、单元格数和数据的方法,以及写入数据的关键步骤,包括创建单元格、设置内容及保存文件。最后,提到了List和Set集合在处理数据时的区别,并分享了个人学习过程中的体会。
摘要由CSDN通过智能技术生成

导入java所需要的poi包

由于我是利用maven,所以导入jar十分方便,在此十分推荐使用,至于maven是什么,我现在也解释不大清楚,感兴趣的话可以搜索了解一下
创建maven项目会自带pom.xml文件,直接往里面添加便会自动帮你到仓库查找然后导入到java中,没有就会去相应位置下载
对于poi包的配置,我的代码如下(poi有很多类型的jar包,根据自我的要求导入相关jar即可)

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
		<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi</artifactId>
		    <version>3.17</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
		<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi-ooxml</artifactId>
		    <version>3.17</version>
		</dependency>

对于导入相关jar有时pom.xml也会报错,目前我碰到的解决办法就是到仓库位置删除后再导入一遍(目前网上都是利用这个解决),有时可能是导入jar包的版本问题

根据实际要求写相应代码

下面这些这些集合是由于我的功能需求自定义的,可以忽略。对于工作表的打开下面代码中有详细注释,其中XSSFWorkbook是处理excel2007版本(excel2007以上的版本没有测试)HSSFWorkbook是出力excel2007版本以前的(虽然代码中没有使用,但查阅大量资料后发现的),多说一句jxl包能处理excel2003以前的版本十分方便,如果是处理excel2003以前的版本推荐下载jxl包。

            ArrayList<students> cellList1 = new ArrayList<students>();//存放1-2550表部分数据
			ArrayList<major> cellList2 = new ArrayList<major>();//存放model表部分数据
			Set set = new HashSet<number>();//存放所有专业
			ArrayList<number> list = new ArrayList<number>();//存放set集合所有数据
			int i = 1;//Excel表的行号
			int sum = 1;//Excel表的行号
			InputStream is = new FileInputStream(new File(要打开的Excel表路径1));
			InputStream isOut = new FileInputStream(new File(要打开的Excel表路径2));
			// 从输入流创建XSSFWorkbook打开Excel表
			XSSFWorkbook xwb = new XSSFWorkbook(is);
			XSSFWorkbook xwbOut = new XSSFWorkbook(isOut);
			// 打开Excel表中的第一个工作表
			XSSFSheet sheet = xwb.getSheetAt(0);
			XSSFSheet sheetOut = xwbOut.getSheetAt(0);
			//获取Excel表中的行
			XSSFRow xr = sheet.getRow(i);
			XSSFRow xrout = sheetOut.getRow(sum);

读取

通过上面的代码我已经打开Excel第一个工作表并且获取到第一行数据了,下面我通过对Excel行数进行循环,获取每一行中的第73列和第74列数据放入到集合中(放入集合仅仅程序要求,可以忽略),这里记录几个常用的方法:
getLastRowNum() 方法为获取行数
getLastCellNum() 方法为获取改行中单元格个数
getCell() 方法为获取单元格
getStringCellValue 方法为获取字符串类型数据
getNumericCellValue() 方法为获取数字类型的数据
createCell() 方法为创造一个单元格
setCellValue() 方法为设置单元格内容

while (sum <= sheetOut.getLastRowNum()) {
   
				//获取Excel表中所需字段名的列号
				if (sum == 0) {
   
					for (int k = 0; k < xrout.getLastCellNum(); k++) {
   
						String string = xrout.getCell(k).getStringCellValue();
						if (string.equals("院校专业")) {
   
							majorColumn = k;
						}
						if (string.equals("学院")) {
   
							collegeColumn = k;
						}
					}
					sum++;
					System.out.println("majorColumn:" + majorColumn + " " + "collegeColumn:" + collegeColumn);
				} else {
   
					xrout = sheetOut.getRow(sum++);
					students student = new students();
					student.schoolMajor = xrout.getCell(majorColumn).getStringCellValue();// 指定了单元格值 (院校专业)
					student.college = xrout.getCell(collegeColumn).getStringCellValue();// 指定了单元格值(学院)
					cellList1.add
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值