DevsDawn
DevsDawn

解决easyexcel导出表格慢问题

近期一个项目中出现使用easyexcel导出表格非常慢的情况。数据量约10w行,50个列,排除从数据库取出和处理数据的时间,调用ExcelWriterBuilderdoWrite方法后需要1分多钟的时间才能够生成好文件,导致客户端经常请求超时,无法顺利导出文件。

通过排查,发现项目之前的开发封装的导出类在导出时使用了LongestMatchColumnWidthStyleStrategyhandler,该handler会根据表格内宽度最大的单元格自动设置列宽,而该功能需要遍历所有单元格的数据来计算宽度来实现,因而十分耗费性能和时间。

结合该项目导出的数据长度一般都比较固定,自动设置列宽并没有太大的必要性,因此决定去掉此handler,改为直接固定每列的宽度。在导出实体类中字段上增加@ColumnWidth(10)注解,即可设置该列的宽度。

@ExcelProperty("姓名")
@ColumnWidth(20)
private String name;

经过以上调整后,导出同样数据量的耗时降低到了25s左右。

若无特别说明,本文采用 CC BY-SA 4.0 协议进行许可。如需转载,请附上本文链接和本声明。
本文链接:https://devsdawn.com/2022/11/solving-easyexcel-export-sheet-slow/
DigitalOcean云服务,美国上市公司,注册即送200USD体验金
Vultr云服务,全球25+地域,注册即送100USD体验金

发表回复

textsms
account_circle
email

DevsDawn

解决easyexcel导出表格慢问题
近期一个项目中出现使用easyexcel导出表格非常慢的情况。数据量约10w行,50个列,排除从数据库取出和处理数据的时间,调用ExcelWriterBuilder的doWrite方法后需要1分多钟的时间才能够生成…
扫描二维码继续阅读
2022-11-09