EasyExcel 快速生成Excel工具的使用

前言

当我从数据库查询到数据,如何将它变成Excel表格的形式展示

一个简单的导出模板如下

导入依赖
<!-- easyexcel--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.14.6</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>RELEASE</version><scope>compile</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.58</version><scope>compile</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.58</version><scope>compile</scope></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.28</version></dependency>
编写日志信息属性文件

log4j.properties

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
在bo实体类上 添加对应注解
@ContentRowHeight(20)
@HeadRowHeight(20)
@ColumnWidth(25)
@Data
@NoArgsConstructor
public class AllNodeList implements Serializable {@ExcelProperty(value = "Level",index = 0)private Integer orderno;@ExcelProperty(value = "Id",index = 1)private Integer id;@ExcelProperty(value = "rname",index = 2)@ColumnWidth(30)private String rname;@ExcelProperty(value = "resourcetype",index = 3)@ColumnWidth(30)private String resourcetype;@ExcelProperty(value = "priority",index = 4)private Integer priority;@ExcelProperty(value = "parentid",index = 5)private Integer parentid;//此处空出了第7 列@ExcelProperty(value = "permission",index = 7)@ColumnWidth(40)private String permission;}
}
创建监听类

在写的过程中暂时没有用到

package study.controller;import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import study.bo.Node4Menu;
import com.alibaba.fastjson.JSON;
import java.util.ArrayList;
import java.util.List;/*** @author wangshiqin* @version 1.0* @className NodeDataListener* @description 监听节点信息生成Excel* @date 2021/5/28*/
public class NodeDataListener extends AnalysisEventListener<Node4Menu> {List<Node4Menu> list = new ArrayList<>();private final Logger logger = LoggerFactory.getLogger(NodeDataListener.class);/*** 如果使用了spring,请使用这个构造方法。* 每次创建Listener的时候需要把spring管理的类传进来*/public NodeDataListener() {}/*** 这个每一条数据解析都会来调用* @param* @param analysisContext*/@Overridepublic void invoke(Node4Menu node4Menu, AnalysisContext analysisContext) {System.out.println("完成了一条数据的解析 --> " + JSON.toJSONString(node4Menu));list.add(node4Menu);}/*** 所有数据解析完成了* 都会来调用* @param context*/@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {System.out.println(JSON.toJSONString(list));}}
调用解析并生成 Execl 表 存在项目同级文件夹中
package study.service;import com.alibaba.excel.EasyExcel;
import study.bo.Node4Menu;import java.util.List;/*** @author wangshiqin* @version 1.0* @className Data2Excel* @description 写到Excel中* @date 2021/5/28*/
public class Data2Excel {public void writetoExcel(List<Node4Menu> node4Menu){//桌面文件名String fileName = "node4menu.xlsx";// 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭// 参数一:写入excel文件路径// 参数二:写入的数据类型是Person// data()方法是写入的数据,结果是List<Person>集合EasyExcel.write(fileName, Node4Menu.class).sheet("模板").doWrite(node4Menu);}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2GdlwdxZ-1622440007412)(G:\Excel.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ntysI98n-1622440007418)(G:\模板.png)]

扩展:

public class ComplexHeadData {/*** 主标题 将整合为一个单元格效果如下:* —————————————————————————* |          主标题        |* —————————————————————————* |字符串标题|日期标题|数字标题|* —————————————————————————*/@ExcelProperty({"主标题", "字符串标题"})private String string;@ExcelProperty({"主标题", "日期标题"})private Date date;@ExcelProperty({"主标题", "数字标题"})private Double doubleData;
}

读表

public void simpleRead() {// 根据名字读取String fileName = "demo.xlsx";// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();

在实体类中,会根据注释中的名称 或者index = 多少列 来读取

EasyExcel 快速生成Excel工具的使用相关推荐

  1. ASP程序快速生成Excel文件

    ASP程序快速生成Excel文件 在一个web项目中,要求将数据生成Excel文件保存到本地,最早使用的方法是直接使用Microsoft的Office Web组件,但是总体感觉是慢(微软的通病).然后 ...

  2. python︱写markdown一样写网页,代码快速生成web工具:streamlit 数据探索案例(六)

    系列参考: python︱写markdown一样写网页,代码快速生成web工具:streamlit介绍(一) python︱写markdown一样写网页,代码快速生成web工具:streamlit 重 ...

  3. python︱写markdown一样写网页,代码快速生成web工具:streamlit 缓存(五)

    系列参考: python︱写markdown一样写网页,代码快速生成web工具:streamlit介绍(一) python︱写markdown一样写网页,代码快速生成web工具:streamlit 重 ...

  4. python︱写markdown一样写网页,代码快速生成web工具:streamlit lay-out布局(四)

    文章目录 1 `streamlit.beta_container()` 2 分列展示 3 按照比例分列展示 4 折叠/展开 系列参考: python︱写markdown一样写网页,代码快速生成web工 ...

  5. python︱写markdown一样写网页,代码快速生成web工具:streamlit 展示组件(三)

    系列参考: python︱写markdown一样写网页,代码快速生成web工具:streamlit介绍(一) python︱写markdown一样写网页,代码快速生成web工具:streamlit 重 ...

  6. python︱写markdown一样写网页,代码快速生成web工具:streamlit 重要组件介绍(二)

    python︱写markdown一样写网页,代码快速生成web工具:streamlit(一) 上篇主要是steamlit的介绍以及streamlit的一些初始化,这篇是一些组件的介绍,当然风格是直接上 ...

  7. 性能碾压 POI !利用模板语法快速生成 Excel 报表

    本期讲师:刘鹏 GcExcel项目组,核心开发者 Hello,大家好,本期葡萄城技术公开课,将由我来为大家带来<性能碾压 POI !利用模板语法快速生成 Excel 报表>的技术分享. 本 ...

  8. jxl 新版电子表格_Android使用jxl快速生成Excel表

    前言 在Android开发时,有些时候需要把app中List集合数据,导出到Excel表中,方便进一步操作.Android可以使用jxl或poi来导出Excel,关于jxl和poi的比较网上有很多说法 ...

  9. 使用Easyexcel动态生成excel

    1. EasyExcel简介 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址: https://gi ...

最新文章

  1. JSP中文乱码问题解决
  2. asp.net弹出div层,并把弹出层上的值赋值给界面
  3. 【s操作】轻松优雅的保存微信群图片和朋友圈图片
  4. Angular界面元素CSS样式的条件式施加方式
  5. std::string删除首字符
  6. 机器学习中各类算法的优缺点比较
  7. th:text为null报错_为vue3.0的学习TS解读高级类型
  8. python常用语法和示例_C语言切换案例教程,语法,示例和规则
  9. 填坑-关于SysTick定时器
  10. 携程“线上摆摊”:1晚赚3105万
  11. html中%3c%3e括号,打开关闭大括号检查
  12. 一例Ext4文件系统fsck后损坏的修复过程
  13. linux 打包 压缩
  14. 南开100题C语言(011-020)
  15. 科技爱好者周刊(第 150 期):当音乐还是稀缺的时候
  16. ONFI ZQ Calibration
  17. WinSCP乱码解决
  18. C语言——运算符优先级
  19. numpy.core.multiarray failed to impor
  20. 使用github-profile-readme-generator美化你的README

热门文章

  1. zabbix 监控部署(下)
  2. React ajax 发送请求(六)
  3. java循环合并行_java导出excel时合并同一列中相同内容的行
  4. SpringBoot +SpringCloud微服务示例,整合FreeMaker,AngularJS
  5. JTAG、SWD调试原理简析
  6. ACL 2022 | 字节AI Lab联合UCSB提出MOSST:基于单调切分的端到端同传
  7. 如何利用非职权影响力管理松散组织|杨三角模型的一次实践
  8. 使用gdb调试程序完全教程
  9. Android 动态使用Iconfont图标
  10. EasyExcel 导出