中国公路工程建设网站,平顶山市建设局网站,亦庄建设局网站,物流网站怎么做的1、easypoi
前言
Excel 在日常工作中经常被用来存储用例信息#xff0c;是一种非常便捷的数据存储工具有着众多的优点#xff0c;我们就不一一介绍了。
今天来讲讲 Java 操作 Excel#xff0c;总所周知 Java 是世界上最好的语言#xff08;不容反驳#xff09;#xff…1、easypoi
前言
Excel 在日常工作中经常被用来存储用例信息是一种非常便捷的数据存储工具有着众多的优点我们就不一一介绍了。
今天来讲讲 Java 操作 Excel总所周知 Java 是世界上最好的语言不容反驳操作一个 Excel 肯定是不在话下咱们熟知的 POIApache 大佬出品的一款非常强大的 office 软件操作包。虽然 POI 强大但是代码相对比较繁琐在当前 python 引领的大潮下简化代码势在必行。
那么如何简化代码呢其实这些事情早就已经有人帮我们想好和做好了比如阿里巴巴的 easyexcel和我们今天的主角 esaypoi 都是非常好的解决方案。那为什么选择 easypoi 而不是阿里的 easyexcel 呢当然是 easypoi 的读写导入和导出更加简单。接下来大家就跟随着我一起慢慢揭开 easypoi 的神秘面纱。
简介
easypoi 功能如同名字 easy主打的功能就是容易让一个没见接触过 poi 的人员 就可以方便的写出 Excel 导出Excel 模板导出Excel 导入Word 模板导出通过简单的注解和模板。
官网 https://opensource.afterturn.cn/doc/easypoi.html
maven 坐标dependencygroupIdcn.afterturn/groupIdartifactIdeasypoi-annotation/artifactIdversion4.0.0/version
/dependency
dependencygroupIdcn.afterturn/groupIdartifactIdeasypoi-base/artifactIdversion4.0.0/version
/dependency
dependencygroupIdorg.hibernate/groupIdartifactIdhibernate-validator/artifactIdversion5.2.4.Final/version
/dependencydependencygroupIdjavax.el/groupIdartifactIdjavax.el-api/artifactIdversion2.2.4/version
/dependency最简单的导入
完成最简单的导入只需要两步一使用注解配置实体类二调用工具类。
实体类省略 get/set 方法 public class API implements Serializable {Excel(name 接口名称)private String name;Excel(name 接口编号)private String id;Excel(name 接口提交方式)private String type;Excel(name 接口地址)private String url;Excel(name 参数类型)private String contentType;Excel(name 接口名称)这个注解是啥意思呢name 属性表示 Excel 表头。如图 当我们导入 Excel 时就会按照Excel 注解的映射关系封装 API 实体类。
工具类 FileInputStream fis new FileInputStream(EXCEL_PATH);
//导入参数设置类
ImportParams params new ImportParams();
ListAPI importExcel ExcelImportUtil.importExcel(fis, API.class, params);总共三行代码第一行加载 Excel 文件第二行设置导入参数第三行根据导入参数返回对应结果并封装成 List 集合。这三个代码中主要讲解第二行和第三行第二行是导入参数设置它能给我们提供什么设置呢 参考下表 属性 类型 默认值 功能 titleRows int 0 表格标题行数默认 0 headRows int 1 表头行数默认 1 startRows int 0 字段真正值和列标题之间的距离 默认 0 keyIndex int 0 主键设置如何这个 cell 没有值就跳过 或者认为这个是 list 的下面的值这一列必须有值不然认为这列为无效数据 startSheetIndex int 0 开始读取的 sheet 位置默认为 0 sheetNum int 1 上传表格需要读取的 sheet 数量默认为 1 needSave boolean false 是否需要保存上传的 Excel needVerfiy boolean false 是否需要校验上传的 Excel saveUrl String upload/excelUpload 保存上传的 Excel 目录默认是 如 TestEntity 这个类保存路径就是 upload/excelUpload/Test/yyyyMMddHHmss****** 保存名称上传时间*五位随机数 verifyHanlder IExcelVerifyHandler null 校验处理接口自定义校验 lastOfInvalidRow int 0 最后的无效行数不读的行数 readRows int 0 手动控制读取的行数 importFields String[] null 导入时校验数据模板是不是正确的 Excel keyMark String : Key-Value 读取标记以这个为 Key后面一个 Cell 为 Value多个改为 ArrayList readSingleCell boolean false 按照 Key-Value 规则读取全局扫描 Excel但是跳过 List 读取范围提升性能 仅仅支持 titleRows headRows startRows 以及 lastOfInvalidRow dataHanlder IExcelDataHandler null 数据处理接口以此为主replace,format 都在这后面
对照完这张表之后你会发现即使我们不对 ImportParams 做任何设置也会有对应的默认值。那么第二句代码就能翻译成读取第一个 Sheet 且只读取第一个表头是 Sheet 的第一行且只有一行。最终我们就能得到第一个 Sheet 中每一行数据并且每一行被封装成了 API 对象也就是一个 List。有了这个集合之后我们需要导入的数据就能任由我们如何处理了是不是很简单。
最简单的导出ListAPI list new ArrayListAPI();
ExportParams exportParams new ExportParams();
Workbook workbook ExcelExportUtil.exportExcel(exportParams, API.class, list);
workbook.write(new FileOutputStream(EXCEL_PATH));
导出也只有四句代码。第一句是需要导出的数据集合第二句导出参数第三句获取导出 workbook 对象第四句通过输出流导出数据到 Excel 中。其中第二句也是有很多设置的我们就用默认设置也能是导出的。第三句也要用到 API 实体类中的注解映射关系。
最后
通过 esaypoi 我们能够使用最少的代码完成基本的导入和导出基本上能够应对实际工作中 80% 的需求了如果需要对 Excel 修改的话目前来说市面上的工具包都做的不太简单所以还是需要通过编写原生 poi 代码完成如果你需要修改 Excel 的代码可以留言哦~