导出Excel超过65535条限制解决方案

2022-03-10 16:47:44 浏览数 (2)

使用poi导出excel的时候如果数据过多,超过65535条会报错,因为excel2003一个sheet表最多导出65535条,excel2007是10万4000多条限制。

因此遇到这种excel导出数据量比较大的时候,可以考虑如果数量超过一定数量,比如50000或者60000,新建一个sheet重新插入数据。

实例代码:

代码语言:javascript复制
        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet=wb.createSheet("号段数据1");
        HSSFSheet sheet2=wb.createSheet("号段数据2");
        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1=sheet.createRow(0);
        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
        //HSSFCell cell=row1.createCell(0);
        //设置单元格内容
        //cell.setCellValue("号段数据");
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
        //sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));
        //在sheet里创建第二行
        HSSFRow row2=sheet.createRow(0);
        //创建单元格并设置单元格内容
        row2.createCell(0).setCellValue("城市");
        row2.createCell(1).setCellValue("电话");
        row2.createCell(2).setCellValue("是否有效");
        row2.createCell(3).setCellValue("是否微信");

        //在sheet里创建第二行
        HSSFRow row4=sheet2.createRow(0);
        //创建单元格并设置单元格内容
        row4.createCell(0).setCellValue("城市");
        row4.createCell(1).setCellValue("电话");
        row4.createCell(2).setCellValue("是否有效");
        row4.createCell(3).setCellValue("是否微信");

        //在sheet里创建第三行
        for (int i = 1; i < 66535; i  ) {
            if(i<60000){
                HSSFRow row3=sheet.createRow(i);
                row3.createCell(0).setCellValue("淄博");
                row3.createCell(1).setCellValue("15953325566");
                row3.createCell(2).setCellValue("是");
                row3.createCell(3).setCellValue("是");
            }else{
                HSSFRow row5=sheet2.createRow(i-59999);
                row5.createCell(0).setCellValue("淄博");
                row5.createCell(1).setCellValue("15953325566");
                row5.createCell(2).setCellValue("是");
                row5.createCell(3).setCellValue("是");
            }

        }
        
        //以下是输出Excel文件

下面是导出的Excel文件:

65535在计算机中代表着什么:

计算机是按照二进制储存数据的,一般用unsign int这种数据类型来储存正整数。每个unsign int型的数在计算机内存中占2个字节,每个字节有8位二进制数。也就是说,在计算机中,每个整数都是用16位2进制数来表示的。所以,最大的数就是16个1,也就是11111111 11111111。把二进制数11111111 11111111转化为十进制数就是65535。

0 人点赞