导入导出笔记-easyExcel初探(表格导入和模板化导出)

前言

本文使用的EasyExcel Alibaba和EasyPoi Apache技术栈分析

  • EasyExcel Dependency
    导入导出笔记-easyExcel初探(表格导入和模板化导出)
  • EasyPoi Dependency
    导入导出笔记-easyExcel初探(表格导入和模板化导出)

1、需求一:表格化需求导入导出(难度星级:☆)

导入导出模板

导入导出笔记-easyExcel初探(表格导入和模板化导出)
实体对象

导入导出笔记-easyExcel初探(表格导入和模板化导出)

这里我们用到了一个注解 com.alibaba.excel.annotation.ExcelProperty

@target(elementtype.field) @Retention(RetentionPolicy.RUNTIME) @Inherited public @interface ExcelProperty {</p> <pre><code>/** * The name of the sheet header. * * * write: It automatically merges when you have more than one head * * read: When you have multiple heads, take the first one * * @return The name of the sheet header */ String[] value() default {""}; /** * Index of column * * Read or write it on the index of column,If it's equal to -1, it's sorted by Java class. * * priority: index > order > default sort * * @return Index of column */ int index() default -1; /** * Defines the sort order for an column. * * priority: index > order > default sort * * @return Order of column */ int order() default Integer.MAX_VALUE; /** * Force the current field to use this converter. * * @return Converter */ Class converter() default AutoConverter.class; /** * * default @see com.alibaba.excel.util.TypeUtil if default is not meet you can set format * * @return Format string * @deprecated please use {@link com.alibaba.excel.annotation.format.DateTimeFormat} */ @Deprecated String format() default ""; </code></pre> <p>}</p> <pre><code> 此处使用到的value注解,其余属性不扩展,有想了解的东西可以关注公众号"技术小邱"了解 **注意**,导出时此处value值要和excel值完全匹配,包括空格 * 导入:解析excel<br> .read(file.getInputStream()).head(Student.class).autoCloseStream(true) .autoTrim(true).sheet().doReadSync() * 导出:生成excel </code></pre> <p>WriteSheet studentSheet = EasyExcel.writerSheet("学生信息").head(ClaimReportListExportDTO.class).build(); excelWriter.write(studentList, studentSheet);</p> <pre><code> 2、模板化导出(难度:☆☆☆) ###### 模板样式 ![导入导出笔记-easyExcel初探(表格导入和模板化导出)](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2053610-20220320170042707-670543083.png) 首先我们需要更换模板,填充代入代码 ![导入导出笔记-easyExcel初探(表格导入和模板化导出)](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2053610-20220320171120603-1193238127.png) 第一步:获取模板输入流信息(读取模板信息)<br> in = this.getClass().getResourceAsStream(fileName) 第二步:转换成输出流(写入目标文件) </code></pre> <p>ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) > -1) { outputStream.write(buffer, 0, len); } outputStream.flush(); in.close();</p> <pre><code> 第三步:目标写入 </code></pre> <p>WriteSheet writeSheet = EasyExcel.writerSheet().build(); FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build(); excelWriter.fill(studentInfoList, fillConfig, writeSheet); ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(byteArrayInputStream) .autoCloseStream(Boolean.TRUE).build(); excelWriter.finish();

这样就完成对应的导出了

以上均可以通过EasyExcel实现,EasyPoi目前运用比较多的是列表动态扩展,后面的博客将会讲到
大家可以关注下公众号,回复EasyExcel获取更多资料

导入导出笔记-easyExcel初探(表格导入和模板化导出)

Original: https://www.cnblogs.com/qiuzhiqiang/p/16030626.html
Author: 邱志强
Title: 导入导出笔记-easyExcel初探(表格导入和模板化导出)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570536/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Silverlight 引路蜂二维图形库示例:绘制各种几何图形

    这个例子说明如何使用Graphics2D对象来绘制各种几何图形。引路蜂二维图形库中定义里多种基本几何图形,如,点,线段,曲线和矩形等。接口PathIterator定义了从Path中…

    Java 2023年5月30日
    061
  • Hibernate基础入门

    hibernate的基本概念 hibernate是 轻量级的 ORM 框架,ORM全称object/relation mapping [对象/关系 映射]。 orm概念 对象关系映…

    Java 2023年6月9日
    075
  • Kafka 消费者解析

    一、消费者相关概念 1.1 消费组&消费者 消费者: 消费者从订阅的主题消费消息,消费消息的偏移量保存在Kafka的名字是 __consumer_offsets的主题中 消…

    Java 2023年6月5日
    060
  • 003-博学谷-年度钻石C++/C-Unix/Linux(2)

    常用命令 3.1 概述 很多人可能在电视或电影中看到过类似的场景,黑客面对一个黑色的屏幕,上面飘着密密麻麻的字符,梆梆一顿敲,就完成了窃取资料的任务。 Linux 刚出世时没有什么…

    Java 2023年6月7日
    0122
  • Nginx:rewrite 的几个技巧

    在软件的发布中,我们经常会使用到 Nginx,Nginx 的功能非常的庞杂,其中 rewrite 是一个非常常用的功能模块,本文介绍 rewrite 的基本概念和几个小技巧。 re…

    Java 2023年5月30日
    076
  • redis主从、哨兵主备切换搭建一步一步图解实现

    Redis支持主从复用。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制。Mater Slave的模式,从Slave向Master发起SYNC命令。 可以是…

    Java 2023年6月5日
    089
  • linux软件相关基操–基于Debian

    更新软件源 apt-get update 更新升级所有软件 apt-get upgrade 更新某个软件 apt-get upgrade [package-name] 列出可更新的…

    Java 2023年6月8日
    078
  • Spring Security 中 CSRF 防御源码解析

    之前的《SpringBoot 如何防御 CSRF 攻击》一文详细讲解过,什么是 CSRF 攻击,以及 CSRF 攻击要如何防御。主要和在 Spring Security 中处理该问…

    Java 2023年5月30日
    090
  • 使用Flutter开发的抖音国际版

    简介 最近花了两天时间研究使用Flutter开发一个抖音国际版. 个人感觉使用Flutter开发app快得不要不要的额. 两天就基本可以开发个大概出来. 最主要是热重载,太方便实时…

    Java 2023年6月7日
    072
  • Eclipse 使用配置全面讲解

    首次使用的必要设置 1、Eclipse 的安装 下载地址:64位neon版eclipse下载 (阿里云盘下载地址,使用7-zip的自释放压缩,下载后直接双击解压,无法解压的话请下载…

    Java 2023年6月8日
    086
  • 程序员的职业素养

    一、专业主义 专业主义不但象征着荣誉和骄傲,而且明确意味着责任和义务,其精髓在于将公司利益视同个人利益,即担当责任。如不能为了交付时效而忽略测试环节,要为不完美承担责任(失误率永远…

    Java 2023年6月9日
    069
  • Mybatis-Plus自动生成器生成代码基于springboot项目启动

    创建springbootweb项目 pom.xml 导入 MBP 依赖 <dependency> <groupid>com.baomidou</gro…

    Java 2023年6月15日
    078
  • 【LEETCODE】71、验证二叉树的前序序列化

    简单粗暴,代码有待优化,不过自己独立完成,没有参考任何材料,还是比较满意的 package y2019.Algorithm.stack.medium; import java.ut…

    Java 2023年6月5日
    092
  • jsp:useBean的scope属性

    1、分类 2、page 3、request 4、session 5、application 1、分类 对于 jsp:useBean创建的对象,由 jsp:useBean的可选属性 …

    Java 2023年6月5日
    076
  • Spring Cloud Gateway配置自定义异常返回

    0. 前言 最近搞微服务的全家桶,用到的Spring Cloud Gateway 这个组件。需要对这个网关抛出的异常进行自定义。网关的异常处理跟单体SpringBoot的全局异常处…

    Java 2023年5月30日
    056
  • Spring常用注解

    Spring部分 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Con…

    Java 2023年6月5日
    067
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球