Easypoi简化了开发中对文档的导入导出实现,并不像poi那样都要写大段工具类来搞定文档的读写。

  • 第一步引入Easypoi依赖
        <!-- 导出文件工具 EasyPoi实现Excel读写管理测试用例  -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.2.0</version>
</dependency>
  • Easypoi的注解使用说明(存留查看即可)

  • 第二步定义对应表格头数据对象实体类(注解的使用可以查阅上面的按需使用即可)



@Setter
@Getter
@ToString
public class LoginCaseDto {
@Excel(name = "flag(0是反向,1是正向)",orderNum = "1",width = 20)
private String flag;
@Excel(name = "urlid(访问id)",orderNum = "2",width = 20)
private String urlid;
@Excel(name = "name(登录账号)",orderNum = "3",width = 20)
private String name;
@Excel(name = "pwd(登录密码)",orderNum = "4",width = 20)
private String pwd;
@Excel(name = "desc(期望提示语)",orderNum = "5",width = 40)
private String desc;
@Excel(name = "actual(实际测试结果)",orderNum = "6",width = 40 )
private String actual;
@Excel(name = "urlpath(被测路径)",orderNum = "7",width = 40 )
private String urlpath;
}
public class LoginUrlDto {
@Excel(name = "id(访问测试类型)",orderNum = "1",width = 20)
private String id;
@Excel(name = "type(请求类型)",orderNum = "2",width = 20)
private String type;
@Excel(name = "url(访问地址)",orderNum = "3",width = 40)
private String url;
}
  • 第三步:封装Easypoi工具类(网上查了很多但是并不完整,这里补充下)

    参考文章

    关键封装工具类多sheet导入方法
  /**
* 功能描述:根据接收的Excel文件来导入多个sheet,根据索引可返回一个集合
* @param filePath 导入文件路径
* @param sheetIndex 导入sheet索引
* @param titleRows 表标题的行数
* @param headerRows 表头行数
* @param pojoClass Excel实体类
* @return
*/
public static <T> List<T> importExcel(String filePath,int sheetIndex,Integer titleRows, Integer headerRows, Class<T> pojoClass) {
// 根据file得到Workbook,主要是要根据这个对象获取,传过来的excel有几个sheet页
ImportParams params = new ImportParams();
// 第几个sheet页
params.setStartSheetIndex(sheetIndex);
params.setTitleRows(titleRows);
params.setHeadRows(headerRows);
List<T> list = null;
try {
list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
} catch (NoSuchElementException e) {
throw new RuntimeException("模板不能为空");
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
  • excel导入示例(直接传入sheet索引获取对应的sheet表)

  • 多sheet表导出方法使用(需要把导入的多sheet表数据转成list集合获取新数据后调用该方法重新写入)

  /**
* 功能描述:把同一个表格多个sheet测试结果重新输出,如果后续增加多个List<Map<String, Object>>对象,需要后面继续追加
* @ExcelEntiry sheet表格映射的实体对象
* @return
*/
public static String exportSheet( Object...objects){
Workbook workBook = null;
try {
// 创建参数对象(用来设定excel得sheet得内容等信息)
ExportParams deptExportParams = new ExportParams();
// 设置sheet得名称
deptExportParams.setSheetName("登录用例");
// 设置sheet表头名称
deptExportParams.setTitle("测试用例");
// 创建sheet1使用得map
Map<String, Object> deptExportMap = new HashMap<>();
// title的参数为ExportParams类型,目前仅仅在ExportParams中设置了sheetName
deptExportMap.put("title", deptExportParams);
// 模版导出对应得实体类型
deptExportMap.put("entity", LoginCaseDto.class);
// sheet中要填充得数据
deptExportMap.put("data", objects[0]);
ExportParams empExportParams = new ExportParams();
empExportParams.setTitle("被测RUL路径");
empExportParams.setSheetName("被测url");
// 创建sheet2使用得map
Map<String, Object> empExportMap = new HashMap<>();
empExportMap.put("title", empExportParams);
empExportMap.put("entity", LoginUrlDto.class);
empExportMap.put("data", objects[1]);
// 将sheet1、sheet2使用得map进行包装
List<Map<String, Object>> sheetsList = new ArrayList<>();
sheetsList.add(deptExportMap);
sheetsList.add(empExportMap);
// 执行方法
workBook = EasyPoiUtil.exportExcel(sheetsList, ExcelType.HSSF);
//String fileName = URLEncoder.encode("test", "UTF-8");
String filepath = (String) LoadStaticConfigUtil.getCommonYml( "testcaseexcel.cases");
FileOutputStream fos = new FileOutputStream(filepath);
workBook.write(fos);
fos.close();
}catch (Exception e){
e.printStackTrace();
}finally {
if(workBook != null) {
try {
workBook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return "success";
}

最后即可获取新的测试结果表格。

项目源码地址传送门

更多测试技术分享、学习资源以及一些其他福利可关注公众号:【Coding测试】获取:

Easypoi实现excel多sheet表导入导出功能的更多相关文章

  1. Laravel Excel 实现 Excel-CSV 文件导入导出功能

    Laravel Excel 是一款基于 PHPExcel 开发的Laravel框架专用的 Excel/CSV 文件导入导出功能的扩展包,用起来的非常方便. 它的 Github 地址是:https:// ...

  2. poi实现excel的导入导出功能

    Java使用poi实现excel的导入导出功能: 工具类ExcelUtil,用于解析和初始化excel的数据:代码如下 package com.raycloud.kmmp.item.service.u ...

  3. SpringCloud微服务实战——搭建企业级开发框架(三十):整合EasyExcel实现数据表格导入导出功能

      批量上传数据导入.数据统计分析导出,已经基本是系统必不可缺的一项功能,这里从性能和易用性方面考虑,集成EasyExcel.EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项 ...

  4. oracle导入导出功能

    1.普通版:oracle导入导出功能:导出exp 用户名/密码@SID file=f:\xx.dmp owner=用户名 导入imp 用户名/密码@SID full=y file=f:\xx.dmp ...

  5. vue+element-ui的简洁导入导出功能

    1.前段后台管理系统中数据展示一般都是用表格,表格会涉及到导入和导出;原生js导出excel2.导入是利用element-ui的Upload 上传组件; <el-upload class=&qu ...

  6. vue + element-ui实现简洁的导入导出功能

    1.安装ElementUI模块 cnpm install element-ui -S 2.在main.js中引入 import ElementUI from 'element-ui' import ' ...

  7. office在繁体系统下 导入导出 功能灰显的解决方法

    当在win7系统使用繁体中文版的office时,或系统是繁体版时,可能会导致office的导入导出功能无法使用 解决方法: 控制面板--区域和语言--格式--中文简体

  8. Asp.net的对Excel文档的导入导出操作

    刚刚初入职场,在休闲的时间写下了项目中用到的对Excel文档操作的方法以及总结,多的不说,直接上代码 public static void CreateExcel(DataSet ds, string ...

  9. 实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件

    今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多 ...

随机推荐

  1. JavaScript创建对象的方式汇总

    1.Object构造函数创建 // 1.Object构造函数创建 var Obj = new Object(); Obj.name='saoge'; Obj.say=function(){ conso ...

  2. 《我想进大厂》之MQ夺命连环11问

    继之前的mysql夺命连环之后,我发现我这个标题被好多套用的,什么夺命zookeeper,夺命多线程一大堆,这一次,开始面试题系列MQ专题,消息队列作为日常常见的使用中间件,面试也是必问的点之一,一起 ...

  3. Python练习题 035:Project Euler 007:第10001个素数

    本题来自 Project Euler 第7题:https://projecteuler.net/problem=7 # Project Euler: Problem 7: 10001st prime ...

  4. ReverseFind的用法 ; 查找字符中最后一个字符

    转载:https://blog.csdn.net/frivolousinstant/article/details/52796922 ReverseFind CString::ReverseFind ...

  5. matlab中imfinfo 有关图形文件的信息

    来源:https://ww2.mathworks.cn/help/matlab/ref/imfinfo.html?searchHighlight=imfinfo&s_tid=doc_srcht ...

  6. P3118 [USACO15JAN]Moovie Mooving G

    P3118 [USACO15JAN]Moovie Mooving G Link 题目描述 Bessie is out at the movies. Being mischievous as alway ...

  7. Pock 把 Touch Bar 变成系统中的 Dock 栏

    Pock 把 Touch Bar 变成系统中的 Dock 栏 Pock 是一款 macOS App,你可以通过它把 Touch Bar 变成系统中的 Dock 栏,直接用来切换和启动 App,尽享全屏 ...

  8. java安全编码指南之:lock和同步的正确使用

    目录 简介 使用private final object来作为lock对象 不要synchronize可被重用的对象 不要sync Object.getClass() 不要sync高级并发对象 不要使 ...

  9. Django Croppie

    下载 Django CroppieDjango Croppie django -croppie是一个简单集成croppie.js图像cropper到django项目的应用程序. 安装 安装与pip安装 ...

  10. 【Rsync实战】Rsync 备份的配置与管理

    一.Rsync 基本概述 rsync 是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用. rsync 官方地址: rsync ...