前言

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

  • EasyExcel Dependency

  • EasyPoi Dependency


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

导入导出模板

实体对象

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

@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface ExcelProperty { /**
* The name of the sheet header.
*
* <p>
* write: It automatically merges when you have more than one head
* <p>
* 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 &gt; order &gt; default sort
*
* @return Index of column
*/
int index() default -1; /**
* Defines the sort order for an column.
*
* priority: index &gt; order &gt; default sort
*
* @return Order of column
*/
int order() default Integer.MAX_VALUE; /**
* Force the current field to use this converter.
*
* @return Converter
*/
Class<? extends Converter> 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 "";
}

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

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

  • 导入:解析excel

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

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

模板样式

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

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

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

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

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();

第三步:目标写入

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获取更多资料

最新文章

  1. GitHub for Windows呆瓜级操作1
  2. C#动态编译代码,执行一个代码片段,或者从指定文件中加载某个接口的实现类
  3. PAT 02-线性结构2 一元多项式的乘法与加法运算 (20分)
  4. java报表工具FineReport使用中遇到的常见报错及解决办法(三)
  5. Codeforces Beta Round #89 (Div. 2) E. Bertown roads(Tarjan、边双连通分量)
  6. 详解Oracle DELETE和TRUNCATE 的区别(摘)
  7. Shell编程基础
  8. UVA 11038 - How Many O&#39;s? 计算对答案的贡献
  9. javascript中的函数返回值(return)
  10. WPF学习:绑定
  11. 引入css ,使用@import和link的方式
  12. HDU 1213 How Many Tables(模板——并查集)
  13. 在右键中添加以管理员运行CMD命令提示符 (进化版)
  14. isPrototypeOf、instanceof、hasOwnProperty函数介绍
  15. js总结:增加和减少文本框
  16. 工厂方法模式(Factory Method)和抽象工厂模式(Abstact Factory)
  17. Managing Hierarchical Data in MySQL(邻接表模型)[转载]
  18. 吴裕雄 24-MySQL 索引
  19. E-commerce 中促销系统的设计
  20. (很难啊)如何实时获取DBGrid 中当前单元格输入的内容? [问题点数:100分,结帖人yifawu100]

热门文章

  1. mysql导出csv格式命令
  2. Linux-标准输入标准输出
  3. 一张图让你看懂 iPhone 各种分辨率问题! #DF
  4. JUC并发包学习
  5. 《PHP程序员面试笔试宝典》——如何进行自我介绍?
  6. InfluxDB 2.x Open Source Time Series Database
  7. [旧][Android] 消息处理机制
  8. 网络主动测评系统,IT网络运维管理的法宝!
  9. Dashboard究竟是什么,它在数据展示上的优势何在?
  10. C++ 派生类函数重载与虚函数继承详解