导入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