EasyExcel 导出数据超过 Excel 单表上限了,该怎么办??? 您所在的位置:网站首页 excel怎么切分 EasyExcel 导出数据超过 Excel 单表上限了,该怎么办???

EasyExcel 导出数据超过 Excel 单表上限了,该怎么办???

2023-03-04 12:12| 来源: 网络整理| 查看: 265

思考逻辑:

了解一下Excel单表最多存储多少行数据(可以存储1048576条数据,1024的平方,2的20次方)。

知道最多多少行就能以这个数为条件,如果超过则进行分表。

分表的同时需要对数据进行分割,才能不超过最大限度。

注: 这就是简单的demo,有关于自己项目中的逻辑自己加。

实体类(非常简单,为了导出表更快)

@ToString @Data @NoArgsConstructor @AllArgsConstructor public class Student {    @ExcelProperty(value = "学生年龄")    private int age; }

测试类

//进行分表demo @Test public void TestWrite() {  //获取要导出的数据     List fillData = initFillData();     //获取一共多少条数据     int totalCount = fillData.size();     String fileName = "学生信息报告.xlsx";     //单表最多存储数     int sheetMaxNum = 1048576;     ExcelWriter excelWriter = null;     // 如果总数超出单个sheet的大小 1048575 则进行分页     if (totalCount > sheetMaxNum) {         excelWriter = EasyExcel.write(fileName, Student.class).build();          // 设置的单个Sheet的数据量,必须小于1048576,         int pageSize = 1048575;         //要分表的页数         int sheetCount = 0;         //如果能整除则为整除的数         if (totalCount % pageSize == 0){             sheetCount = totalCount / pageSize ;         }else{         //如果不能整除则+1             sheetCount = (totalCount / pageSize) + 1 ;         }         int num = 0;         //进行循环分表         for (int pageNum = 1; pageNum = totalCount) {                 fromIndex = totalCount;             }             //将数据进行分组             excelWriter.write(fillData.subList(num, fromIndex), writeSheet);             num = fromIndex ;         }     } else { // 不超出则一次性全部导出         excelWriter = EasyExcel.write(fileName, Student.class).build();         WriteSheet writeSheet = EasyExcel.writerSheet("学生信息表").head(Student.class).build();         excelWriter.write(initFillData(), writeSheet);     }     excelWriter.finish(); } 测试导出两百万条数据 private static List initFillData() {     ArrayList fillDatas = new ArrayList();     for (int i = 2; i 


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有