HSSFWorkBook导出excel2003表数据超过65535条时报错怎么办

         考勤管理模块中的签到记录列表数据导出excel2003表时,如果数据量太大,超过了65535条就会报错.

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

/**
     * excel 2003版本的导出方法 支持多个sheet导出 导出的文件后缀为.xls
     * 由于excel2003最多导出65535条数据
     * @param dataMap       要导出的数据
     * @param excelFilePath excel文件的存放位置
     * @param fileName      excel文件名字
     * @return
     */
    public String exportXlsExcel(Map> dataMap,String excelFilePath,String fileName){
        FileOutputStream fout=null;
        String fileLocal="";
        try{
            File file=new File(excelFilePath);
            if(!file.exists()){
                file.mkdirs();
            }
            // 第一步,创建一个webbook,对应一个Excel文件
            HSSFWorkbook wb=new HSSFWorkbook();
            // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
            HSSFSheet sheet=null;
            List dataList=null;
            HSSFCellStyle style=wb.createCellStyle();
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            //
            dataList=dataMap.get("签到记录列表");
            int i;
            int k;
            /**
             * k表示sheet工作表的张数
             */
            int dataSizeNum=dataList.size()-1;    //减去表头
            if (dataSizeNum%EXCEL_EXPORT_PARAM==0){
                k=(dataList.size()-1)/EXCEL_EXPORT_PARAM;
            }else {
                k=(dataList.size()-1)/EXCEL_EXPORT_PARAM+1;
            }
            for (int t=0;t=dataList.size()){
                        break;
                    }
                    String[] arr=dataList.get(num);
                    /**
                     * t不等于0且i=0时说明又是一张sheet表
                     */
                    if (t!=0&&i==0){
                        arr=dataList.get(0);
                    }
                    for(int j=0;null!=arr&&j



你可能感兴趣的:(HSSFWorkBook导出excel2003表数据超过65535条时报错怎么办)