导出excel HSSFWorkbook 只能最多导出65535条数据

HSSFWorkbook 最多导出65535条数据

/**
     * excel 2003版本的导出方法 支持多个sheet导出 导出的文件后缀为.xls
     * 由于excel2003最多导出65535条数据
     * @param dataMap       要导出的数据
     * @param excelFilePath excel文件的存放位置
     * @param fileName      excel文件名字
     * @return

 

解决办法:当数据每隔65535条时,就新建一个sheet工作表写数据,把数据写到多张sheet表里面.

 

或者使用XSSFWorkbook 对象 也可以解决这个问题

不过需要xlsx  office2007以上

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet1= wb.createSheet("test");

 

以下是对这些的一些介绍:

创建流程:(上级为 下级的载体)

1:.创建 工作簿

2.创建 sheet(可以创建多个)

3.创建行

4.创建单元格

接下来 分别说下 工作簿的常用三种形式的区别,他们分别是 1.HSSFWorkbook 2.XSSFWorkbook 3.SXSSFWorkbook

第一种:HSSFWorkbook 

针对是 EXCEL2003 版本,扩展名为 .xls;所以 此种的局限就是 导出的行数 至多为 65535 行,此种 因为行数不足七万行 所以 一般不会发生 内存不足的情况(OOM)

第二种:XSSFWorkbook 

这种形式的出现 是由于 第一种HSSFWorkbook 的局限性而产生的,因为其所导出的行数比较少,所以 XSSFWookbook应运而生 其 对应的是EXCEL2007+(1048576行,16384列)扩展名 .xlsx,最多可以 导出 104 万行,不过 这样 就伴随着一个问题---OOM 内存溢出,原因是 你所 创建的 book sheet row cell 等 此时是存在 内存的 并没有 持久化,那么 随着 数据量增大  内存的需求量也就增大,那么很大可能就是要 OOM了,那么 怎么解决呢?

第三种:SXSSFWorkbook  poi.jar 3.8+

第二种遇到的问题该如何解决呢? 因为数据量过大 导致内存吃不消 那么 可以 让内存 到量持久化 吗? 

答案是 肯定的,

此种的情况 就是 设置 最大 内存条数 比如  设置 最大内存量为5000 rows  --new SXSSFWookbook(5000),此时 当 行数 达到 5000 时,把 内存 持久化 写到 文件中,以此 逐步 写入  避免OOM,那么这样 就完美解决了 大数据下 导出 的问题;

 

    XSSFWorkbook work = new XSSFWorkbook();
        XSSFSheet sheet = work.createSheet("遗漏资产信息");
        //在sheet中创建一行  
         
         XSSFRow row = sheet.createRow(0);

 

你可能感兴趣的:(开发,本地环境配置)