導出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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM