zoukankan      html  css  js  c++  java
  • 导出Excel超过65535条限制解决方案

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

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

    实例代码:

            //创建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。

  • 相关阅读:
    【iCore3 双核心板_ uC/OS-III】例程三:任务的挂起与恢复
    病例讨论-----鼻窦炎一例(联想的风)
    桂枝二越婢一治疗鼻窦炎(联想的风)
    半夏厚朴汤治疗双肺支气管炎(联想的风)
    茯苓饮治疗呕吐(联想的风)
    半夏泻心汤治疗腹泻一例(联想的风)
    己椒苈黄汤治水肿案(联想的风)
    苓甘五味姜辛汤(联想的风病案)
    黃芩汤(联想的风病案)
    九味羌活汤的理解---王幸福
  • 原文地址:https://www.cnblogs.com/jiangwz/p/9075589.html
Copyright © 2011-2022 走看看