前言
在日常开发中,数据导出到Excel是非常常见的操作,尤其是在开发管理类的系统时,导出报表等相关数据表格会因为数据量过大,列数过多从而导致导出耗时过多甚至将服务器CPU吃满,内存溢出,导致服务宕机,这是非常危险的。
心酸历程
在项目开发过程中使用了如下三种导出方法,在这里我只分享第三种,前两种导出有兴趣的小伙伴可以去了解一下(在数据量不大的情况下并且列数不多时可以考虑使用前两种方法)
- XSSFWorkbook方式导出
- -SXSSFWorkbook方式导出
- alibaba的EasyExcel导出
官方文档
EasyExcel的效率以及使用方法在文档中都有说明(效率是真的快啊,写起来也好方便)
EasyExcel官方文档
EasyExcel代码地址
记录一下
@Test
public void test() throws Exception {
FileOutputStream out = null;
//包装数据
List<BillTYFormsDTO> list = new ArrayList<>();
//读取模板输入流
InputStream templateFile = new FileInputStream("D:/YYDZ01/test/download/rec_order_list.xlsx");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ExcelWriter excelWriter = EasyExcel.write(bos).withTemplate(templateFile).build();
WriteSheet writeSheet = EasyExcel.writerSheet().build();
//写入数据
excelWriter.fill(list, writeSheet);
excelWriter.finish();
//生成本地文件地址
String fileUrl = ExcelUtil.getAbsoluteFile(ExcelUtil.encodingFilename("测试文件"));
out = new FileOutputStream(fileUrl);
bos.writeTo(out);
new File(fileUrl);
}