news 2026/5/26 8:19:39

easyPoi使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
easyPoi使用

一、核心定位区别

  • EasyPoi全能型,支持 Excel、Word、PDF 导出,注解极简,适合小数据、快速开发
  • EasyExcel高性能型只专注 Excel,主打低内存、大数据量,适合海量数据导出

二、EasyPoi 优缺点

1、优点

使用最简单

纯注解开发,一行代码导出,上手成本极低,新手友好。

功能更全面

支持 Excel、Word、PDF 导出,支持图片、复杂表头、合并单元格、模板导出。

生态成熟

文档齐全,社区问题多,适合传统企业、后台管理系统快速开发。

小数据场景效率极高

几十行、几百行数据导出,代码量比 EasyExcel 少很多。

2、缺点

内存占用极高(致命缺点)

底层基于Apache POI,会把整个文件加载到内存,数据上万行极易OOM(内存溢出)

大数据量完全不行

不支持流式读写,几万行以上就会卡、崩。

性能差

大数据导出速度远不如 EasyExcel。

3、使用场景

  • 后台管理系统
  • 小数据量导出(<1 万行)
  • 需要导出 Word/PDF/ 图片
  • 追求开发速度,不追求极致性能

三、EasyExcel 优缺点

1、优点

性能天花板,低内存

底层自研解析引擎不加载全量数据到内存,采用逐行读写。百万行数据导出也不会 OOM。

速度极快

百万行数据导出速度是 EasyPoi 的 5~10 倍。

专门为大数据设计

阿里内部大规模使用,稳定性极强。

④API 清晰,扩展性强

2、缺点

只支持 Excel,不支持 Word、PDF

功能没有 EasyPoi 丰富

复杂样式、图片、合并单元格、模板语法不如 EasyPoi 灵活。

学习成本略高

比 EasyPoi 多几行代码,需要理解读写监听器。

3、适用场景

  • 大数据量导出(1 万~100 万行)
  • 电商、金融、报表系统
  • 高并发、高可用服务
  • 怕 OOM、追求稳定性

四、引入方法

五、使用介绍

高级功能应用介绍

导出方法说明
@GetMapping("/exportByTemplate") public void exportByTemplate(HttpServletResponse response) throws IOException { // 1. 准备数据 Map<String, Object> map = new HashMap<>(); map.put("title", "用户列表"); map.put("date", new Date()); map.put("users", getUserList()); // 2. 获取模板路径 TemplateExportParams params = new TemplateExportParams( "templates/export_template.xlsx"); // 3. 导出 Workbook workbook = ExcelExportUtil.exportExcel(params, map); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition", "attachment;filename=template_export.xlsx"); workbook.write(response.getOutputStream()); }
模板主要参数类型:
①基础文本参数

②图片参数

easyPoi中使用对象ImageEntity

③数组集合

模板中使用特殊表达式{{$fe: list t}}这种表达式

使用参考文档:https://blog.csdn.net/m0_46300599/article/details/137911866?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-137911866-blog-99696008.235%5Ev43%5Epc_blog_bottom_relevance_base8&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-137911866-blog-99696008.235%5Ev43%5Epc_blog_bottom_relevance_base8&utm_relevant_index=1
处理单元格格式合并问题
①利用easyPoi注解
public class MergeData { @Excel(name = "部门", mergeVertical = true) // 垂直合并相同内容 private String department; @Excel(name = "姓名") private String name; @Excel(name = "月份", mergeRely = {"department"}) // 依赖于department列的合并 private String month; @Excel(name = "销售额") private BigDecimal amount; }
②重写easyPoi源码

源码中存在的bug问题(需要重写修复)

easyPoi-base-4.2.0.jar中的MergedRegionHelper.shiftRows()方法

注:若不修复会出现在一个模板中多次使用{{$fe: }} 时,校验模板for-each方法出错
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 8:19:31

终极Windows激活解决方案:KMS_VL_ALL_AIO完全指南

终极Windows激活解决方案&#xff1a;KMS_VL_ALL_AIO完全指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows激活烦恼吗&#xff1f;每次重装系统后都要到处寻找激活工具&#xf…

作者头像 李华
网站建设 2026/5/22 12:27:04

如何轻松创建4K虚拟显示器:Parsec VDD新手完全指南

如何轻松创建4K虚拟显示器&#xff1a;Parsec VDD新手完全指南 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 想要在Windows电脑上扩展显示空间&#xff0c;却不想购买昂贵的物理…

作者头像 李华
网站建设 2026/5/22 12:22:27

Lovable电商后台架构设计全拆解(百万级订单承载实测版)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Lovable电商后台架构设计全拆解&#xff08;百万级订单承载实测版&#xff09; Lovable电商后台历经三年迭代&#xff0c;支撑单日峰值订单量达186万笔&#xff08;2024年双11压测实测&#xff09;&#xff0…

作者头像 李华
网站建设 2026/5/22 12:16:00

互联网大厂 Java 求职面试:从音视频场景看微服务架构

互联网大厂 Java 求职面试&#xff1a;从音视频场景看微服务架构在今天的面试中&#xff0c;面试官将会对燕双非进行一系列的技术提问&#xff0c;场景设定在互联网大厂&#xff0c;围绕音视频场景展开。第一轮提问 面试官&#xff1a;燕双非&#xff0c;你能简单描述一下 Java…

作者头像 李华