easyexcel多个sheet导入_Java中Easypoi实现excel多sheet表导入导出功能

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

第一步引入Easypoi依赖

cn.afterturn

easypoi-spring-boot-starter

4.2.0

Easypoi的注解使用说明(存留查看即可)

6ba36b5066ceae62db33f0b3c2dfb17e.png

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

51b3ff7ea5ac6cf4ea1b5ddc46fce60c.png

3d94e558cb8ab63284ea47d4912e7c83.png

@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 List importExcel(String filePath,int sheetIndex,Integer titleRows, Integer headerRows, Class pojoClass) {

// 根据file得到Workbook,主要是要根据这个对象获取,传过来的excel有几个sheet页

ImportParams params = new ImportParams();

// 第几个sheet页

params.setStartSheetIndex(sheetIndex);

params.setTitleRows(titleRows);

params.setHeadRows(headerRows);

List 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表)

79b371191b98ce2d0bcef5deaedde6a1.png

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

/**

* 功能描述:把同一个表格多个sheet测试结果重新输出,如果后续增加多个List>对象,需要后面继续追加

* @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 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 empExportMap = new HashMap<>();

empExportMap.put("title", empExportParams);

empExportMap.put("entity", LoginUrlDto.class);

empExportMap.put("data", objects[1]);

// 将sheet1、sheet2使用得map进行包装

List> 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";

}

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

项目源码地址传送门

到此这篇关于Java中Easypoi实现excel多sheet表导入导出功能的文章就介绍到这了,更多相关Easypoi excel多sheet表导入导出内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 严格模式_MySQL 开启/关闭 严格模式(Strict Mode)

[广告&#xff1a;最高 2000 红包]阿里云服务器、主机等产品通用&#xff0c;可叠加官网常规优惠使用 | 限时领取查看 Mysql 是否开启严格模式&#xff1a;打开 MySQL 配置文件 my.cnf(windows为my.ini)。搜索 sql-mode 如果搜索不到就代表 非严格模式 。搜索到了就代表开启了严…

mysql 导入日期 0000_解决Excel导入MySQL日期为0000-00-00

最近在为客户做一个库存升级改造的项目&#xff0c;之前客户的数据管理全部是在Excel中操作&#xff0c;估计以前也是没有意识到数据量变大以后&#xff0c;工作会变得如此困难&#xff0c;基本上处于一个无法操作的程度了。于是我们将旧版本的Excel表格格式化以后&#xff0c;…

关于mysql优化_关于MySQL优化的几点总结

前言现如今&#xff0c;数据库的操作越来越成为整个应用的性能瓶颈了&#xff0c;这点对于Web应用尤其明显。所以&#xff0c;我整理了MySQL优化的几点建议&#xff0c;希望这些优化技巧对您有用&#xff0c;总结不到的&#xff0c;欢迎大家补充。SQL执行慢的原因网络速度慢&am…

ubuntu忘记mysql密码_ubuntu 忘记mysql 密码解决方法

一段时间没有用mysql数据库&#xff0c;今天突然需要使用&#xff0c;结果忘记密码&#xff0c;google了下找到的解决方法&#xff0c;就顺便记录下&#xff0c;下次碰到就不需要这么麻烦了1、输入命令 cat /etc/mysql/debian.cnf2、使用账号 debian-sys-maint 账号登录mysql密…

navicat mysql创建表_Navicat for MySQL如何创建数据表

Navicat for MySQL是针对MySQL数据库管理而研发的管理工具,创建数据表是其最基本操作,本教程将详解Navicat for MySQL创建数据表的方法。 步骤一:新建连接 运行Navicat数据库管理工具,连接本地数据库。点击左上角“文件”或者工具栏“连接”图标,创建自己的数据库连接。Na…

mysql-5.1.73-8.el6_在centos中安装mysql详细步骤说明

Last login: Sun Dec 24 04:55:59 20171、安装依赖[rootnode001 ~]# yum install -y perlLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfilebase | 3.7 kB 00:00extras | 3.4 kB 00:00updates | 3.4 kB 00:00Setting up Install ProcessPackage 4:perl…

lte盲重定向_LTE重选、切换、重定向的区别

【资料名称】&#xff1a;LTE重选、切换、重定向的区别【资料作者】&#xff1a;A【资料日期】&#xff1a;20150916【资料语言】&#xff1a;中文【资料格式】&#xff1a;DOC/DOCX【资料目录和简介】&#xff1a;这里主要简单阐述了LTE系统的小区重选、切换、重定向的区别小区…

冯乐乐 unity_Unity常用矩阵运算的推导补遗——切线空间

在上一篇文章中&#xff0c;我写了一些关于Unity中各个坐标空间及其转换矩阵是如何得到的&#xff0c;说实在的&#xff0c;我是那种“记忆需要依靠外部装置存储”类、如同《攻壳机动队》的电子脑一样的人&#xff0c;每次遇到问题了再去对着笔记慢慢翻找才是我的风格&#xff…

mysql 字段类型设计_Mysql字段类型设计相关问题!-阿里云开发者社区

Mysql是以文件存储在我们的系统的硬盘上面&#xff0c;那么(1)当我们读取写入的时候就会有磁盘IO的问题(2)当我们存储的数据是以页单位存储&#xff0c;而且每页的大小是16K&#xff0c;那么我们要尽可能的让我们的一页数据存放的更多。表结构宽度不要太大&#xff0c;也就是列…

mysql保存时乱码了_MySQL保存中文乱码的原因和解决办法

(3)MySQL的字符集设置。这个是重点了&#xff0c;一般都是在这里搞错而出现了mysql乱码。mysql编码设置可以分为三种设置&#xff1a;数据库的编码、表的编码、和字段的编码。a、数据库的编码&#xff1a;在sqlyog工具中操作把&#xff0c;右击数据库点击更改数据库&#xff0c…

python中convert函数用法_Python Pandas DataFrame.tz_convert用法及代码示例

Pandas DataFrame是带有标签轴(行和列)的二维大小可变的&#xff0c;可能是异构的表格数据结构。算术运算在行和列标签上对齐。可以将其视为Series对象的dict-like容器。这是 Pandas 的主要数据结构。Pandas DataFrame.tz_convert()用于将tz-aware轴转换为目标时区。用法&#…

python偶数个数_python基础

标识符命名规则开发中&#xff0c;通常约定俗称遵守如下规则&#xff1a;删除变量和垃圾回收机制可以通过del语句删除不在使用的变量a 123 del a #删除了栈&#xff0c;没有删除堆链式赋值xy123 相当于 x123;y123系列解包赋值系列数据赋值给对应相同…

keyshot怎么让物体发光_户外发光字的防水措施怎么做,不亮了怎么修。

户外发光字的防水措施与维修发光字大多是安装在户外的&#xff0c;因此会受到热晒、雨淋、寒冻等因素的影响&#xff0c;这些因素都会加速LED发光字的老化&#xff0c;从而使LED发光字进水老化。那么&#xff0c;该怎么防止这种情况呢?一、在每个广告字的笔画的最下方&#xf…

mysql删除员工_数据库删除职工信息

《数据库技术原理与应用教程第2版》——1.4数据管理本节书摘来自华章出版社《数据库技术原理与应用教程第2版》一书中的第1章&#xff0c;第1.4节&#xff0c;作者 徐洁磐 操凤萍  &#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众号查看。1.4数据管理人类社会有着…

手撕包菜 mysql_手撕包菜搭建

概述最近做了两件事&#xff0c;一件事就是买了块1t硬盘&#xff0c;第二件事就是买了个百度云会员&#xff0c;无奈找不到资源下载&#xff0c;那就没办法了&#xff0c;搭建一个磁力链接搜索引擎来爬去链接&#xff0c;然后去找资源。说道磁力链接搜索引擎&#xff0c;最好的…

word流程图怎么使箭头对齐_word 流程图 怎么把箭头对整齐啊?

word里画流程图把箭bai头画直du,可通过shift键实现画出zhi垂直或水平的直箭头。方法步dao骤如下:回1、打开需要答操作的WORD文档,选中需要画出箭头的流程图框图,点解绘图工具中的“排列对齐”,然后选中“左右居中”对齐。2、在插入形状中找到并点击箭头,使用箭头形状工具…

java商品管理系统_【Java Web】简易商品信息管理系统——首个Web项目

正文之前在学习了一段时间的Java Web的内容之后&#xff0c;当然需要有个项目来练练手&#xff0c;我相信大多数人的首选项目都是信息管理系统吧&#xff0c;所以我选择了商品信息管理系统目前项目源码已全部上传至GitHub&#xff0c;欢迎大家来fork —— 商品信息管理系统正文…

java 向上舍入_介绍Java的大数类(BigDecimal)和八种舍入模式

1.BigDecimal简介BigDecimal 由任意精度的整数非标度值 和32 位的整数标度 (scale) 组成。如果为零或正数&#xff0c;则标度是小数点后的位数。如果为负数&#xff0c;则将该数的非标度值乘以 10 的负scale 次幂。因此&#xff0c;BigDecimal表示的数值是(unscaledValue 10-s…

java spring mvc_java spring mvc 全注解

本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工作;废话不多说了上干货,其实我也没怎么理解不过简单的运行了一个spring mvc 全注解项目,也不能说…

java 配置hdfs集群_Hadoop集群搭建-04安装配置HDFS

HDFS是配合Hadoop使用的分布式文件系统&#xff0c;分为namenode: nn1.hadoop nn2.hadoopdatanode: s1.hadoop s2.hadoop s3.hadoop(看不明白这5台虚拟机的请看前面 01前期准备 )解压配置文件[hadoopnn1 hadoop_base_op]$ ./ssh_all.sh mv /usr/local/hadoop/etc/hadoop /usr/l…