导入导出笔记-easyExcel初探(表格导入和模板化导出)
前言
本文使用的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 > 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<? 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获取更多资料
导入导出笔记-easyExcel初探(表格导入和模板化导出)的更多相关文章
- 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...
- Spring Boot学习笔记----POI(Excel导入导出)
业务:动态生成模板导出Excel,用户修改完再导入Excel. Spring boot + bootstrap + poi 1.添加Dependence <dependency> < ...
- tp5--Excel表格导入导出
来源于:https://www.cnblogs.com/MyIsLu/p/6830579.html PHPExcel 扩展包下载地址: https://github.com/P ...
- 前端Excel表格导入导出,包括合并单元格,表格自定义样式等
表格数据导入 读取导入Excel表格数据这里采用的是 xlsx 插件 npm i xlsx 读取excel需要通过 XLSX.read(data, {type: type}) 方法来实现,返回一个叫W ...
- MySQL学习笔记十一:数据导入与导出
数据导入 1.mysqlimport命令行导入数据 在使用mysqlimport命令导入数据时,数据来源文件名要和目标表一致,不想改文件名的话,可以复制一份创建临时文件,示例如下. 建立一个文本use ...
- DLL学习笔记一(DLL导入导出)
创建DLL: 先声明导出函数:使用__declspec(dllexport) #include"DLLSample.h" #ifndef _DLL_SAMPLE_H #define ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)
ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...
- GIS案例学习笔记-CAD数据分层导入现有模板实例教程
GIS案例学习笔记-CAD数据分层导入现有模板实例教程 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 1. 原始数据: CAD数据 目标模板 2. 任务:分5个图层 ...
- 把EXECL表格导入到WORD中
一般我们在编写开发文档时需要进行表格导入导出,这里提供几种方法供参考. 法一: 打开EXECL,WORD软件,在需要导入表格的地方选择“插入” ,找到“对象选项: ”在对象对话框中点击“由文件创建”, ...
随机推荐
- druid 数据源密码加密配置
<!-- 数据源配置 --> <bean id="default" class="com.alibaba.druid.pool.DruidDataSou ...
- 节点流和处理流(BufferedReader和BufferedWriter,BufferedInputStream和BufferedOutputStream,ObjectlnputStream和objectOutputStream)
一.基本介绍: 1.节点流可以从一个特定的数据源读写数据,如FileReader. FileWriter 如图:字节流是直接对数据源(文件,数组之类存放数据的地方)进行操作 2.处理流(也叫包装流)是 ...
- 帆软报表(finereport)JS实现点击参数面板按钮显示或隐藏数据
当报表中列出数据太多时,想通过显示按钮隐藏明细数据只显示统计数据.如下图示例,那么该如何实现呢?本文以FineReport为例,来讲述JS如何实现点击参数面板按钮显示或隐藏数据. 打开报表 在参数面板 ...
- 如何在 Xamarin 中快速集成 Android 版认证服务 - 邮箱地址篇
Xamarin 作为微软提供的移动服务多系统开发平台,成为很多开发者首选的应用开发平台.AppGallery Connect(以下简称 AGC)也在逐步的支持 Xamarin 的 SDK.认证服务也是 ...
- Solution -「洛谷 P4389」付公主的背包
\(\mathcal{Description}\) Link. 容量为 \(n\),\(m\) 种物品的无限背包,求凑出每种容量的方案数,对 \(998244353\) 取模. \(n,m ...
- Solution -「SDOI 2017」「洛谷 P3784」遗忘的集合
\(\mathcal{Description}\) Link. 给定 \(\{f_1,f_2,\cdots,f_n\}\),素数 \(p\).求字典序最小的 \(\{a_1,a_2,\cdot ...
- C#颠倒字符串
本函数实现了反转字符串的功能,例如字符串"张赐荣",反转后得到"荣赐张". public static string ReverseText(this stri ...
- 【摸鱼神器】基于SSM风格的Java源代码生成器 单表生成 一对一、一对多、多对多连接查询生成
一.序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器.代码生成器模块属于可拆卸模块,即按需引入.代码生成器生成SSM(Spring.SpringBoot.Myb ...
- jenkins发布代码选择不同分支
jenkins上传代码分支以前都是用变量的方式,手动实现.过程就像这样 构建时候的界面就像下面这样,需要手动输入分支版本. 或者有固定的上线分支,用参数化构建 选项参数 来选择.总之这些方法比较传统, ...
- mysql安装后,过一段时间,在命令行无法启动
这种问题主要是MYsql没有启动起来,可以在启动管理中开启mysql此服务即可解决