Java中Easypoi实现excel多sheet表导入导出功能

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

最后即可获取新的测试结果表格。
项目源码地址传送门

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

(0)

相关推荐

  • Java中EasyPoi多sheet导出功能实现

    EasyPoi 多sheet导出 序言:之前一直想开始写博客,都没有时间行动起来,今天终于开始了我的第一篇博客- 最近接到一个导出excel功能的需求,该功能主要难点是 多sheet页 导出合并单元格(跨行.跨列) 多表头合并 我开始的想法是如果采用poi来实现这个功能,业务逻辑可能会有点复杂,于是我使用了easyPoi--一个so easy的工具,它的特点就是非常方便,用jQuery的一句来说就是:write Less,Do More. 话不多说,接下来分享一下我的代码(我使用的是SSH框架搭

  • 实现ssr服务端渲染的方法步骤

    前言 前段时间寻思做个个人网站,然后就立马行动了.  个人网站如何实现选择什么技术方案,自己可以自由决定.  刚好之前有大致想过服务端渲染,加载速度快,还有seo挺适合个人网站的.  所以就自己造了个轮子用koa+react来实现ssr服务端渲染. 什么是ssr 最初听说有单页面的服务端渲染的时候,就理解为类似传统的服务端路由+模板渲染,只是需要用单页面应用的框架写.后面寻思这样好像有点傻,再一了解,原来只是在首次加载的时候,后端进行当前路径页面的组件渲染和数据请求,组装成html返回给前端,用

  • Java中Easypoi实现excel多sheet表导入导出功能

    Easypoi简化了开发中对文档的导入导出实现,并不像poi那样都要写大段工具类来搞定文档的读写. 第一步引入Easypoi依赖 <!-- 导出文件工具 EasyPoi实现Excel读写管理测试用例 --> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.

  • Java中easypoi导入excel文件列名相同的处理方案

    Easypoi是什么 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没接触过poi的人员,就可以方便的写出Excel导出.Excel模板导出.Excel导入.Word模板导出,通过简单的注解和模板语言(熟悉的表达式fe语法),完成以前复杂的写法 开源地址:https://gitee.com/lemur/easypoi 独特的功能 基于注解的导入导出,修改注解就可以修改Excel 支持常用的样式自定义 基于map可以灵活定义的表头字段 支持一堆多的导出,导入 支持模板的导出,一些

  • Java中EasyPoi导出复杂合并单元格的方法

    前言: 上星期做了一个Excel的单元格合并,用的是EasyPoi,我之前合并单元格都是原生的,第一次使用EasyPoi合并也不太熟悉,看着网上自己套用,使用后发现比原生的方便些,贡献一下,也给其他用到合并而且用的是EasyPoi的小伙伴节省下时间. 导出模板: 坐标: 版本号,自己来定,可以去官网查看:EasyPoi官网 <!-- easypoi 导入包 --> <dependency> <groupId>cn.afterturn</groupId> &l

  • padas 生成excel 增加sheet表的实例

    基本介绍 pandas是Python数据挖掘.数据分析中常用的库.而DataFrame生成excel中的sheet表,以及在excel中增加sheet表,在数据分 析中也经常用到.这里以一个简单例子介绍这两个功能的用法,以备不时之需. 例子: #!/usr/bin/env python # -*- coding: utf-8 -*- """ Version: 0.1 Author: Wang Pei License: Copyright(c) 2017 Pei.Wang Su

  • Java中四种9*9乘法表的实现方式(附代码)

    前言: 初学java,实现99乘法表是必学必会的内容. 需求 : 分别写出上下左右,对应四个角的乘法表. 思路: 可以先打印出*星星,形成一个直角三角形,然后再替换成乘法公式. 代码如下: public class Demo { public static void main(String[] args) { for (int i = 1; i <=5 ; i++) { for (int j = 1; j <=i; j++) { System.out.print("* ")

  • C#使用NPOI实现Excel导入导出功能

    本文实例为大家分享了C#使用NPOI实现Excel导入导出的具体代码,供大家参考,具体内容如下 Excel导入 使用OpenFileDiolog控件和button结合,选择文件导入,将路径显示在文本框 设置按钮点击事件,将文件路径赋给textBox.Text private void Department_SUM_Click(object sender, EventArgs e)         {             OpenFileDialog open = new OpenFileDi

  • java 中JXL操作Excel实例详解

    JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文支持非常好,API是纯Java的, 并不 依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件. 另外需要说明的是,这套API对图形和图表的支持很有限,而且 仅仅识别PNG格式. 使用如下: 搭建环境 将下载后的文件解包,得到jxl.jar

  • java 中 poi解析Excel文件版本问题解决办法

    poi解析Excel文件版本问题解决办法 poi解析Excel文件时有两种格式: HSSFWorkbook格式用来解析Excel2003(xls)的文件 XSSFWorkbook格式用来解析Excel2007(xlsx)的文件 如果用HSSFWorkbook解析Excel2007(xlsx)时就会报异常:" The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that d

  • SpringBoot+Vue实现EasyPOI导入导出的方法详解

    目录 前言 一.为什么做导入导出 二.什么是 EasyPOI 三.项目简介 项目需求 效果图 开发环境 四.实战开发 核心源码 前端页面 后端核心实现 五.项目源码 小结 前言 Hello~ ,前后端分离系列和大家见面了,秉着能够学到知识,学会知识,学懂知识的理念去学习,深入理解技术! 项目开发过程中,很大的需求都有 导入导出功能,我们依照此功能,来实现并还原真实企业开发中的实现思路 一.为什么做导入导出 为什么做导入导出 导入 在项目开发过程中,总会有一些统一的操作,例如插入数据,系统支持单个

随机推荐