Java自动化测试(Excel文件解析 9)
时间:2022-07-22
本文章向大家介绍Java自动化测试(Excel文件解析 9),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Excel操作
Maven中添加读取excel的第三方包POI
官网:https://poi.apache.org/ Maven:https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
<!-- 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>
新建一个测试的excel
exceldemo
将excel放到:src/test/resources
读取excel步骤
- 打开excel
- 获取所有sheet
- 获取指定sheet
- 获取指定row
- 指定的cell单元格
- 获取单元格内容
package com.zhongxin.day10.excel;
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ReadDemo {
public static void main(String[] args) {
//读取excel
FileInputStream fis = null;
try {
// 1. 打开excel
fis = new FileInputStream("src/test/resources/demo.xlsx");
// 2. 获取所有sheet
Workbook sheets = WorkbookFactory.create(fis);
// 3. 获取指定sheet
Sheet sheet = sheets.getSheet("Sheet1"); // 通过名称
Sheet sheet1 = sheets.getSheetAt(0); // 通过索引
// 4. 获取指定row
Row row = sheet.getRow(2);
// 5. 指定的cell单元格
Cell cell = row.getCell(1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
// 6. 获取单元格内容
String cellValue = cell.getStringCellValue();
System.out.println(cellValue);
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
读取excel中全部内容
package com.zhongxin.day10.excel;
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ReadDemo2 {
public static void main(String[] args) {
FileInputStream fis = null;
try {
// 1. 打开excel
fis = new FileInputStream("src/test/resources/demo.xlsx");
// 2. 获取所有sheet
Workbook sheets = WorkbookFactory.create(fis);
// 3. 获取指定sheet
Sheet sheet = sheets.getSheet("Sheet1"); // 通过名称
Sheet sheet1 = sheets.getSheetAt(0); // 通过索引
// 4. 获取所有row
// 4.1 增强for
for (Row row : sheet) {
for (Cell cell : row) {
// 强行转换单元格类型
cell.setCellType(CellType.STRING);
String cellValue = cell.getStringCellValue();
System.out.print(cellValue + ",");
}
System.out.println();
}
// 4.2 普通for
int lastRowNum = sheet.getLastRowNum();
for (int i = 0; i <= lastRowNum; i++) {
Row row = sheet.getRow(i);
int lastCellNum = row.getLastCellNum();
for (int j = 0; j < lastCellNum; j++) {
Cell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
cell.setCellType(CellType.STRING);
String cellValue = cell.getStringCellValue();
System.out.print(cellValue + ",");
}
System.out.println();
}
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
增强for
for (Row row : sheet) {
for (Cell cell : row) {
// 强行转换单元格类型
cell.setCellType(CellType.STRING);
String cellValue = cell.getStringCellValue();
System.out.print(cellValue + ",");
}
System.out.println();
}
普通for
int lastRowNum = sheet.getLastRowNum();
for (int i = 0; i <= lastRowNum; i++) {
Row row = sheet.getRow(i);
int lastCellNum = row.getLastCellNum();
for (int j = 0; j < lastCellNum; j++) {
Cell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
cell.setCellType(CellType.STRING);
String cellValue = cell.getStringCellValue();
System.out.print(cellValue + ",");
}
System.out.println();
}
excel 写入
写=创建excel+创建sheet+创建row+创建cell
修改操作=读取+写入
package com.zhongxin.day10.excel;
import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class WriteDemo {
public static void main(String[] args) throws IOException {
// excel 写入
// 1.打开excel
FileInputStream fis = new FileInputStream("src/test/resources/demo.xlsx");
// 2. 获取所有sheet
Workbook sheets = WorkbookFactory.create(fis);
// 3. 获取指定sheet
Sheet sheet = sheets.getSheetAt(0);
// 4. 获取指定row
Row row = sheet.getRow(1);
// 5. 获取指定cell
Cell cell = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
// 6. 修改值
cell.setCellValue(99);
// 7. 流输出对象
FileOutputStream fos = new FileOutputStream("src/test/resources/demo.xlsx");
// 8. 把java内存中内容写入excel文件中
sheets.write(fos);
// 9. 关流
fis.close();
fos.close();
}
}
XML操作
Xml:扩展性标记语言
特点:可扩展性,在遵循xml语法的前提下支持自定义和修改
xml语法
声明
<?xml version="1.0" encoding="UTF-8"?>
根元素
XML必须包含根元素,它是所有其他元素的父元素
所有元素有开始就有结束
大小写敏感
嵌套使用需要注意嵌套的顺序
<?xml version="1.0" encoding="UTF-8"?>
<sutdent>
<name>张三</name>
<age>18</age>
<score>100</score>
</sutdent>
dom4j
<!-- https://mvnrepository.com/artifact/dom4j/dom4j -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
xml读取(了解)
package com.zhongxin.day10.xml;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
public class XmlDemo {
public static void main(String[] args) throws IOException, DocumentException {
// xml读取
// 1. xml读取对象
SAXReader reader = new SAXReader();
FileInputStream fis = new FileInputStream("src/test/resources/Student.xml");
// 2. 整颗dom树
Document document = reader.read(fis);
// 3. 获取root标签
Element rootElement = document.getRootElement();
// 4. 获取root标签下的一级子标签
List<Element> subElements1 = rootElement.elements();
for (Element element : subElements1) {
System.out.println(element.getName() + "====" + element.getData());
// 5. 获取root标签下的二子标签
List<Element> subElement2 = element.elements();
if (subElement2 != null && subElement2.size() > 0) {
for (Element element1 : subElement2) {
System.out.println(element1.getName() + "====" + element1.getData());
}
}
}
fis.close();
}
}
- Netty-整合Protobuf高性能数据传输
- Netty-整合kryo高性能数据传输
- 40个重要的HTML 5面试问题及答案
- js调用原生API--陀螺仪和加速器
- OpenDaylight开发-DataStoreChange监听器三种类型
- express模拟接口
- spring boot开发的日志系统
- elasticsearch 5.0.1安装analysis-ik分词器
- Spring Cloud中Feign如何统一设置验证token
- laravel+react+webpack+babel+gulp的配置
- OpenvSwitch系列之浅析main函数
- 没有公式如何看懂EM算法?
- Google用来处理海量文本去重的simhash算法原理及实现
- Open vSwitch系列之openflow版本兼容
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- php面试实现反射注入的详细方法
- laravel框架 api自定义全局异常处理方法
- laravel实现于语言包的完美切换方法
- PHP校验15位和18位身份证号的类封装
- 用Echarts打造一个轮播图!
- Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
- PHP 获取客户端 IP 地址的办法实例代码
- laravel http 自定义公共验证和响应的方法
- Windows服务器中PHP如何安装redis扩展
- NBA投篮数据可视化,4行代码就能实现!
- Laravel框架实现文件上传的方法分析
- PHP集成环境XAMPP的安装与配置
- Laravel解决nesting level错误和隐藏index.php的问题
- PHP反射原理与用法深入分析
- Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例