前言

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

  • EasyExcel Dependency

  • EasyPoi Dependency


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

导入导出模板

实体对象

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

  1. @Retention(RetentionPolicy.RUNTIME)
  2. @Inherited
  3. public @interface ExcelProperty {
  4. /**
  5. * The name of the sheet header.
  6. *
  7. * <p>
  8. * write: It automatically merges when you have more than one head
  9. * <p>
  10. * read: When you have multiple heads, take the first one
  11. *
  12. * @return The name of the sheet header
  13. */
  14. String[] value() default {""};
  15. /**
  16. * Index of column
  17. *
  18. * Read or write it on the index of column,If it's equal to -1, it's sorted by Java class.
  19. *
  20. * priority: index &gt; order &gt; default sort
  21. *
  22. * @return Index of column
  23. */
  24. int index() default -1;
  25. /**
  26. * Defines the sort order for an column.
  27. *
  28. * priority: index &gt; order &gt; default sort
  29. *
  30. * @return Order of column
  31. */
  32. int order() default Integer.MAX_VALUE;
  33. /**
  34. * Force the current field to use this converter.
  35. *
  36. * @return Converter
  37. */
  38. Class<? extends Converter> converter() default AutoConverter.class;
  39. /**
  40. *
  41. * default @see com.alibaba.excel.util.TypeUtil if default is not meet you can set format
  42. *
  43. * @return Format string
  44. * @deprecated please use {@link com.alibaba.excel.annotation.format.DateTimeFormat}
  45. */
  46. @Deprecated
  47. String format() default "";
  48. }

此处使用到的value注解,其余属性不扩展,有想了解的东西可以关注公众号“技术小邱”了解

注意,导出时此处value值要和excel值完全匹配,包括空格

  • 导入:解析excel

    EasyExcel.read(file.getInputStream()).head(Student.class).autoCloseStream(true) .autoTrim(true).sheet().doReadSync()
  • 导出:生成excel
  1. WriteSheet studentSheet = EasyExcel.writerSheet("学生信息").head(ClaimReportListExportDTO.class).build();
  2. excelWriter.write(studentList, studentSheet);

2、模板化导出(难度:☆☆☆)

模板样式

首先我们需要更换模板,填充代入代码

第一步:获取模板输入流信息(读取模板信息)

InputStream in = this.getClass().getResourceAsStream(fileName)

第二步:转换成输出流(写入目标文件)

  1. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  2. byte[] buffer = new byte[1024];
  3. int len;
  4. while ((len = in.read(buffer)) > -1) {
  5. outputStream.write(buffer, 0, len);
  6. }
  7. outputStream.flush();
  8. in.close();

第三步:目标写入

  1. WriteSheet writeSheet = EasyExcel.writerSheet().build();
  2. FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
  3. excelWriter.fill(studentInfoList, fillConfig, writeSheet);
  4. ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(byteArrayInputStream)
  5. .autoCloseStream(Boolean.TRUE).build();
  6. excelWriter.finish();

这样就完成对应的导出了

以上均可以通过EasyExcel实现,EasyPoi目前运用比较多的是列表动态扩展,后面的博客将会讲到

大家可以关注下公众号,回复EasyExcel获取更多资料

导入导出笔记-easyExcel初探(表格导入和模板化导出)的更多相关文章

  1. 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

    我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...

  2. Spring Boot学习笔记----POI(Excel导入导出)

    业务:动态生成模板导出Excel,用户修改完再导入Excel. Spring boot + bootstrap + poi 1.添加Dependence <dependency> < ...

  3. tp5--Excel表格导入导出

    来源于:https://www.cnblogs.com/MyIsLu/p/6830579.html PHPExcel 扩展包下载地址:             https://github.com/P ...

  4. 前端Excel表格导入导出,包括合并单元格,表格自定义样式等

    表格数据导入 读取导入Excel表格数据这里采用的是 xlsx 插件 npm i xlsx 读取excel需要通过 XLSX.read(data, {type: type}) 方法来实现,返回一个叫W ...

  5. MySQL学习笔记十一:数据导入与导出

    数据导入 1.mysqlimport命令行导入数据 在使用mysqlimport命令导入数据时,数据来源文件名要和目标表一致,不想改文件名的话,可以复制一份创建临时文件,示例如下. 建立一个文本use ...

  6. DLL学习笔记一(DLL导入导出)

    创建DLL: 先声明导出函数:使用__declspec(dllexport) #include"DLLSample.h" #ifndef _DLL_SAMPLE_H #define ...

  7. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)

    ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...

  8. GIS案例学习笔记-CAD数据分层导入现有模板实例教程

    GIS案例学习笔记-CAD数据分层导入现有模板实例教程 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 1. 原始数据: CAD数据 目标模板 2. 任务:分5个图层 ...

  9. 把EXECL表格导入到WORD中

    一般我们在编写开发文档时需要进行表格导入导出,这里提供几种方法供参考. 法一: 打开EXECL,WORD软件,在需要导入表格的地方选择“插入” ,找到“对象选项: ”在对象对话框中点击“由文件创建”, ...

随机推荐

  1. druid 数据源密码加密配置

    <!-- 数据源配置 --> <bean id="default" class="com.alibaba.druid.pool.DruidDataSou ...

  2. 节点流和处理流(BufferedReader和BufferedWriter,BufferedInputStream和BufferedOutputStream,ObjectlnputStream和objectOutputStream)

    一.基本介绍: 1.节点流可以从一个特定的数据源读写数据,如FileReader. FileWriter 如图:字节流是直接对数据源(文件,数组之类存放数据的地方)进行操作 2.处理流(也叫包装流)是 ...

  3. 帆软报表(finereport)JS实现点击参数面板按钮显示或隐藏数据

    当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据.如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据. 打开报表 在参数面板 ...

  4. 如何在 Xamarin 中快速集成 Android 版认证服务 - 邮箱地址篇

    Xamarin 作为微软提供的移动服务多系统开发平台,成为很多开发者首选的应用开发平台.AppGallery Connect(以下简称 AGC)也在逐步的支持 Xamarin 的 SDK.认证服务也是 ...

  5. Solution -「洛谷 P4389」付公主的背包

    \(\mathcal{Description}\)   Link.   容量为 \(n\),\(m\) 种物品的无限背包,求凑出每种容量的方案数,对 \(998244353\) 取模.   \(n,m ...

  6. Solution -「SDOI 2017」「洛谷 P3784」遗忘的集合

    \(\mathcal{Description}\)   Link.   给定 \(\{f_1,f_2,\cdots,f_n\}\),素数 \(p\).求字典序最小的 \(\{a_1,a_2,\cdot ...

  7. C#颠倒字符串

    本函数实现了反转字符串的功能,例如字符串"张赐荣",反转后得到"荣赐张". public static string ReverseText(this stri ...

  8. 【摸鱼神器】基于SSM风格的Java源代码生成器 单表生成 一对一、一对多、多对多连接查询生成

    一.序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器.代码生成器模块属于可拆卸模块,即按需引入.代码生成器生成SSM(Spring.SpringBoot.Myb ...

  9. jenkins发布代码选择不同分支

    jenkins上传代码分支以前都是用变量的方式,手动实现.过程就像这样 构建时候的界面就像下面这样,需要手动输入分支版本. 或者有固定的上线分支,用参数化构建 选项参数 来选择.总之这些方法比较传统, ...

  10. mysql安装后,过一段时间,在命令行无法启动

    这种问题主要是MYsql没有启动起来,可以在启动管理中开启mysql此服务即可解决