前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >导出Excel超过65535条限制解决方案

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

作者头像
二十三年蝉
发布2022-03-10 16:47:44
3.2K0
发布2022-03-10 16:47:44
举报
文章被收录于专栏:闻道于事闻道于事

使用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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-05-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档