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. 准备数据 MapString, 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;filenametemplate_export.xlsx); workbook.write(response.getOutputStream()); }模板主要参数类型①基础文本参数②图片参数easyPoi中使用对象ImageEntity③数组集合模板中使用特殊表达式{{$fe: list t}}这种表达式使用参考文档https://blog.csdn.net/m0_46300599/article/details/137911866?spm1001.2101.3001.6650.1utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-137911866-blog-99696008.235%5Ev43%5Epc_blog_bottom_relevance_base8depth_1-utm_sourcedistribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-137911866-blog-99696008.235%5Ev43%5Epc_blog_bottom_relevance_base8utm_relevant_index1处理单元格格式合并问题①利用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方法出错
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2634763.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!