背景

在做接口测试的时候,经常会使用 Excel 来存储对应的接口信息和用例信息,为了方便程序的读取,引入easypoi 工具来读取 Excel 内容。easypoi 比起 poi 使用更加的方便,代码量也少很多。

应用代码

例如我想读取下面 Excel 中的接口信息:

  • 引入对应 easypoi 依赖:
  1. <!--easypoi依赖-->
  2. <dependency>
  3. <groupId>cn.afterturn</groupId>
  4. <artifactId>easypoi-annotation</artifactId>
  5. <version>4.0.0</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>cn.afterturn</groupId>
  9. <artifactId>easypoi-base</artifactId>
  10. <version>4.0.0</version>
  11. </dependency>
  12. <!-- 添加校验,在easypoi读取Excel时,可以去掉空行,同时对字段进行强制校验 -->
  13. <dependency>
  14. <groupId>org.hibernate</groupId>
  15. <artifactId>hibernate-validator</artifactId>
  16. <version>5.2.4.Final</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>javax.el</groupId>
  20. <artifactId>javax.el-api</artifactId>
  21. <version>2.2.4</version>
  22. </dependency>
  • 创建对应的实体类:
  1. package com.ggf.juhe.pojo;
  2. import cn.afterturn.easypoi.excel.annotation.Excel;
  3. import javax.validation.constraints.NotNull;
  4. /**
  5. * @Description: 接口信息实体类
  6. * @Author: ggf
  7. * @Date: 2020/06/13
  8. */
  9. public class ApiInfo {
  10. /**
  11. * 接口编号
  12. */
  13. @Excel(name="接口编号")
  14. private String id;
  15. /**
  16. * 接口名称
  17. */
  18. @Excel(name="接口名称")
  19. private String name;
  20. /**
  21. * 请求URL
  22. */
  23. @Excel(name="接口地址")
  24. @NotNull
  25. private String url;
  26. /**
  27. * 接口请求方式
  28. */
  29. @Excel(name="接口提交方式")
  30. private String method;
  31. /**
  32. * 请求数据类型
  33. */
  34. @Excel(name="接口参数类型")
  35. private String type;
  36. public ApiInfo() {
  37. }
  38. public ApiInfo(String id, String name, String method, String url, String type) {
  39. this.id = id;
  40. this.name = name;
  41. this.method = method;
  42. this.url = url;
  43. this.type = type;
  44. }
  45. public String getId() {
  46. return id;
  47. }
  48. public void setId(String id) {
  49. this.id = id;
  50. }
  51. public String getName() {
  52. return name;
  53. }
  54. public void setName(String name) {
  55. this.name = name;
  56. }
  57. public String getMethod() {
  58. return method;
  59. }
  60. public void setMethod(String method) {
  61. this.method = method;
  62. }
  63. public String getUrl() {
  64. return url;
  65. }
  66. public void setUrl(String url) {
  67. this.url = url;
  68. }
  69. public String getType() {
  70. return type;
  71. }
  72. public void setType(String type) {
  73. this.type = type;
  74. }
  75. @Override
  76. public String toString() {
  77. return "ApiInfo{" +
  78. "id='" + id + '\'' +
  79. ", name='" + name + '\'' +
  80. ", method='" + method + '\'' +
  81. ", url='" + url + '\'' +
  82. ", type='" + type + '\'' +
  83. '}';
  84. }
  85. }
  • easypoi 读取 Excel 代码:
  1. package com.ggf.juhe.demo;
  2. import cn.afterturn.easypoi.excel.ExcelImportUtil;
  3. import cn.afterturn.easypoi.excel.entity.ImportParams;
  4. import com.ggf.juhe.pojo.ApiInfo;
  5. import java.io.FileInputStream;
  6. import java.io.IOException;
  7. import java.util.Collections;
  8. import java.util.List;
  9. /**
  10. * @Description:
  11. * @Author: ggf
  12. * @Date: 2020/06/13
  13. */
  14. public class EasypoiDemo {
  15. public static void main(String[] args) {
  16. String filePath = "src/main/resources/jhapi_case.xlsx";
  17. List<ApiInfo> apiInfos = readExcel(filePath, 0, ApiInfo.class);
  18. for (ApiInfo apiInfo : apiInfos) {
  19. System.out.println(apiInfo);
  20. }
  21. }
  22. /**
  23. *
  24. * @param filePath Excel文件路径
  25. * @param sheetIndex 对应的表单,从0开始,0代表第一个表单
  26. * @param clazz 对应封装的数据实例对象
  27. * @return 返回数据集合
  28. */
  29. public static <E> List<E> readExcel(String filePath, int sheetIndex, Class<E> clazz) {
  30. // 定义输入流
  31. FileInputStream fis = null;
  32. List<E> datas = null;
  33. try {
  34. // 创建输入流对象
  35. fis = new FileInputStream(filePath);
  36. // 创建一个easypoi使用的配置类
  37. ImportParams params = new ImportParams();
  38. // 设置表格坐标
  39. params.setStartSheetIndex(sheetIndex);
  40. // 校验Excel文件,去掉空行
  41. params.setNeedVerify(true);
  42. // 读取数据
  43. datas = ExcelImportUtil.importExcel(fis, clazz, params);
  44. } catch (Exception e) {
  45. e.printStackTrace();
  46. } finally {
  47. try {
  48. if (fis != null) {
  49. fis.close();
  50. }
  51. } catch (IOException e) {
  52. e.printStackTrace();
  53. }
  54. }
  55. return datas;
  56. }
  57. }
  • 打印结果

easypoi 读取 Excel 简单应用的更多相关文章

  1. 第四篇:java读取Excel简单模板

    场景:对于经常需要导入Excel模板或数据来解析后加以应用的,使用频率非常之高,做了一个比较稳定的版本,体现在这些地方工具:org.apache.poi使用前必须了解这些:1.要解析,那肯定先判断是不 ...

  2. Java web的读取Excel简单Demo

    目录结构: Data.xls数据:   后台页面: GetExcelData.java       public void doGet(HttpServletRequest request, Http ...

  3. 简单poi读取excel

    1.添加依赖jar包 maven配置: <!-- poi being --> <dependency> <groupId>org.apache.poi</gr ...

  4. JAVA使用POI读取EXCEL文件的简单model

    一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...

  5. Unity用Excel.dll简单读取Excel内容

    Unity用Excel.dll简单读取Excel内容 需要Excel.dll 需要如下三个命名空间 using System.IO; using Excel; using System.Data; 1 ...

  6. C#读取Excel文件的简单方法

    一.简述 本文讲C#通过第三方库读取Excel的最简单的方法,下文给一个读取行数的例子. 二.依赖 引入nuget.org包如下: <?xml version="1.0" e ...

  7. python pandas模块简单使用(读取excel为例)

    第一步:模块安装 pip install pandas 第二步:使用(单个工作表为例) 说明:如果有多个工作表,那么只要指定sheetname=索引,(第一个工作表为0,第二个工作表为1,以此类推) ...

  8. Vue+EasyPOI导出Excel(带图片)

    一.前言 平时的工作中,Excel 导入导出功能是非常常见的功能,无论是前端 Vue (js-xlsx) 还是 后端 Java (POI),如果让大家手动编码实现的话,恐怕就很麻烦了,尤其是一些定制化 ...

  9. 使用Aspose.Cells读取Excel

      最新更新请访问: http://denghejun.github.io Aspose.Cells读取Excel非常方便,以下是一个简单的实现读取和导出Excel的操作类: 以下是Aspose.Ce ...

随机推荐

  1. 流复制-pg_basebackup (没有自定义表空间)

    一.组成部分 1.walsender进程是用来发送WAL日志记录的 2.walreceiver进程是用来接收WAL日志记录的 3.startup进程是用来apply日志的 二.主库配置 1.授权账号, ...

  2. 02 Redis数据结构基础

    一.客户端命令行参数 1.-x 从标准输入读取一个参数,等价于set k v [root@localhost etc]# echo -en 'v1'|redis-cli -a foobared -x ...

  3. 系统对 Device Tree Overlays 的支持方式

    问题来源: 野火 iMX 6ULL 开发板资料. https://tutorial.linux.doc.embedfire.com/zh_CN/latest/linux_basis/fire-conf ...

  4. Mysql数值类型,小数点后保留两个零

    如有不足请帮忙留言区补充谢谢~ 一,数值类型保留小数点后两个0 在存入数据时,应客户需求数值类型,比如钱数,分数等等需要精确到小数点后几位. 800存入时显示为800.00 方法:在建表时直接定义此数 ...

  5. PHP目录操作函数汇总

    一.判断普通文件和目录    1.is_file()//判断给定文件名是否为一个正常的文件    2.is_dir()//判断给定文件名是否是一个目录二.文件的属性    1.file_exists( ...

  6. 补充_001_问题_001_Vivian

    在此先向前辈们和同学们道个歉,一是没有认真地专研前辈们的精文,二是对一些读者造成了一定程度上的困扰,为此鄙人深感抱歉,现在对"问题_001_Vivian"中不严谨的地方进行修改: ...

  7. JVM调优总结(六)-新一代的垃圾回收算法

    垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限.但是他无法解决的一个问题,就是Full GC所带来的应用暂停.在一些对实时性要 ...

  8. .Net Core之仓储(Repository)模式

    我们经常在项目中使用仓储(Repository)模式,来实现解耦数据访问层与业务层.那在.net core使用EF core又是怎么做的呢? 现在我分享一下我的实现方案: 一.在领域层创建Reposi ...

  9. Java IO(十一) DataInputStream 和 DataOutputStream

    Java IO(十一) DataInputStream 和 DataOutputStream 一.介绍 DataInputStream 和 DataOutputStream 是数据字节流,分别继承自 ...

  10. 重学 Java 设计模式:实战单例模式

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 5个创建型模式的最后一个 在设计模式中按照不同的处理方式共包含三大类:创建型模式.结 ...