本章讲解一个第三方工具POI,因为我们的测试数据大多数情况下试放入Excel文件内,所以需要知道如何去操作获取Excel文件里的内容,POI将会担任该角色
1.导入Maven依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
**补充:**poi的两个依赖,分别是处理excel2003和excel2007+的,对应的是poi和poi-ooxml。
2.项目中创建一个poi_test.xlsx文件
文件内容为:
3.创建一个ReadExcel.java的文件
package com.ming.Selenium;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadExcel {
public static void main(String[] args) {
try {
// 指定excel的路径
File src = new File("src/main/java/com/ming/res/poi_test.xlsx");
// 加载文件
FileInputStream fis = new FileInputStream(src);
// 加载workbook
XSSFWorkbook wb = new XSSFWorkbook(fis);
//加载sheet,这里我们只有一个sheet,默认是sheet1
XSSFSheet sh1 = wb.getSheetAt(0);
// 开始读取第一行第一列的数据
System.out.println(sh1.getRow(0).getCell(0).getStringCellValue());
// 读取第一行第二列内容
System.out.println(sh1.getRow(0).getCell(1).getStringCellValue());
// 读取第二行第二列内容
System.out.println(sh1.getRow(1).getCell(0).getStringCellValue());
// 读取第二行第二列内容
System.out.println(sh1.getRow(1).getCell(1).getStringCellValue());
// 获取实际总行数
System.out.println(sh1.getPhysicalNumberOfRows());
// 获取实际总列数
System.out.println(sh1.getPhysicalNumberOfRows());
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
结果:
user1
user1@abc.com
user2
user2@abc.com
4
4.写内容到Excel文件夹内
比如我们在第三列写入对应的行号
package com.ming.Selenium;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ReadExcel {
public static void main(String[] args) {
try {
// 指定excel的路径
File src = new File("src/main/java/com/ming/res/poi_test.xlsx");
// 加载文件
FileInputStream fis = new FileInputStream(src);
// 加载workbook
XSSFWorkbook wb = new XSSFWorkbook(fis);
//加载sheet,这里我们只有一个sheet,默认是sheet1
XSSFSheet sh1 = wb.getSheetAt(0);
// 开始读取第一行第一列的数据
System.out.println(sh1.getRow(0).getCell(0).getStringCellValue());
// 读取第一行第二列内容
System.out.println(sh1.getRow(0).getCell(1).getStringCellValue());
// 读取第二行第二列内容
System.out.println(sh1.getRow(1).getCell(0).getStringCellValue());
// 读取第二行第二列内容
System.out.println(sh1.getRow(1).getCell(1).getStringCellValue());
// 获取实际总行数
System.out.println(sh1.getPhysicalNumberOfRows());
// 获取实际总列数
System.out.println(sh1.getPhysicalNumberOfRows());
//写入excel数据
sh1.getRow(0).createCell(2).setCellValue("1");
sh1.getRow(1).createCell(2).setCellValue("2");
sh1.getRow(2).createCell(2).setCellValue("3");
sh1.getRow(3).createCell(2).setCellValue("4");
// 保存文件
FileOutputStream fout=new FileOutputStream(new File("src/main/java/com/ming/res/poi_test.xlsx"));
//覆盖写入内容
wb.write(fout);
// 关闭文件
fout.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}