问题描述:导出后,导出的表格没有任何内容
问题原因:数据量过大,导致后台报错Invalid row number (65536) outside allowable range (0..65535),Excel一张(或者说一页)默认行数是65535
解决思路:行数过多时,新建一页
代码:

response.addHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(title+".xls", "UTF-8"));response.setContentType("application/octet-stream");// 声明一个工作薄HSSFWorkbook workbook = new HSSFWorkbook();/** 每页数据量为65530,超过的换到下一页* */int page = dataset.size()%65530;int dataCount = dataset.size();int pageNo;if (page == 0) {pageNo = dataCount / 65530;} else {pageNo = dataCount / 65530 + 1;}for (int p = 1; p <= pageNo; p++) {// 生成一个表格HSSFSheet sheet = workbook.createSheet(title.split(",")[0]+""+p);// 设置表格默认列宽度为15个字节sheet.setDefaultColumnWidth((short) 25);//头部标题样式HSSFCellStyle style0 = workbook.createCellStyle();style0.setFillForegroundColor(HSSFColor.GREY_40_PERCENT.index);style0.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style0.setBorderBottom(HSSFCellStyle.BORDER_THIN);style0.setBorderLeft(HSSFCellStyle.BORDER_THIN);style0.setBorderRight(HSSFCellStyle.BORDER_THIN);style0.setBorderTop(HSSFCellStyle.BORDER_THIN);style0.setAlignment(HSSFCellStyle.ALIGN_CENTER);HSSFFont font0 = workbook.createFont();font0.setColor(HSSFColor.BLACK.index);font0.setFontHeightInPoints((short) 20);font0.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);style0.setFont(font0);// 表头样式HSSFCellStyle style = workbook.createCellStyle();style.setFillForegroundColor(HSSFColor.GREY_40_PERCENT.index);style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);HSSFFont font = workbook.createFont();font.setColor(HSSFColor.BLACK.index);font.setFontHeightInPoints((short) 12);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);style.setFont(font);//正文样式HSSFCellStyle style2 = workbook.createCellStyle();style2.setFillForegroundColor(HSSFColor.WHITE.index);style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);style2.setBorderRight(HSSFCellStyle.BORDER_THIN);style2.setBorderTop(HSSFCellStyle.BORDER_THIN);style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);HSSFFont font2 = workbook.createFont();font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);font2.setFontHeightInPoints((short) 14);style2.setFont(font2);HSSFRow rowName = sheet.createRow((short) 0);//(列开始,行开始,列结束,行结束)sheet.addMergedRegion(new Region(0, (short)0, 0, (short) (headers.length-1)));HSSFCell ce = rowName.createCell((short) 0);ce.setCellValue(title);ce.setCellStyle(style0);//产生表格标题行HSSFRow row = sheet.createRow(1);for (short i = 0; i < headers.length; i++) {HSSFCell cell = row.createCell(i);cell.setCellStyle(style);HSSFRichTextString text = new HSSFRichTextString(headers[i]);cell.setCellValue(text+""+p);}for (int k = 65530 * p - 65530; k < 65530 * p && k < dataCount; k++) {row = sheet.createRow(k - 65530 * p + 65532);Object t = dataset.get(k);Field[] fields = t.getClass().getDeclaredFields();int j=0;List colsList = new ArrayList(list);for (short i = 0; i < fields.length; i++) {if(colsList.contains(cols[i])){HSSFCell cell = row.createCell(j);j++;Field field = fields[i];String fieldName = field.getName();String getMethodName = "get"+ fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);Class tCls = t.getClass();Method getMethod = tCls.getMethod(getMethodName,new Class[] {});Object value = getMethod.invoke(t, new Object[] {});//判断值的类型后进行强制类型转换cell.setCellStyle(style2);String textValue = getValue(value);if(textValue!=null&&!"".equals(textValue)){cell.setCellValue(textValue);}else{cell.setCellValue("--");}colsList.remove(0);}}}/*//遍历集合数据,产生数据行Iterator<Object> it = dataset.iterator();int index = 1;while (it.hasNext()) {index++;row = sheet.createRow(index);Object t = it.next();//利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值Field[] fields = t.getClass().getDeclaredFields();int j=0;List colsList = new ArrayList(list);for (short i = 0; i < fields.length; i++) {if(colsList.contains(cols[i])){HSSFCell cell = row.createCell(j);j++;Field field = fields[i];String fieldName = field.getName();String getMethodName = "get"+ fieldName.substring(0, 1).toUpperCase()+ fieldName.substring(1);Class tCls = t.getClass();Method getMethod = tCls.getMethod(getMethodName,new Class[] {});Object value = getMethod.invoke(t, new Object[] {});//判断值的类型后进行强制类型转换cell.setCellStyle(style2);String textValue = getValue(value);if(textValue!=null&&!"".equals(textValue)){cell.setCellValue(textValue);}else{cell.setCellValue("--");}colsList.remove(0);}}}if(totals!=null&&totals.size()>0){row = sheet.createRow(index+1);for (int i = 0; i < totals.size(); i++) {HSSFCell cell = row.createCell(i);cell.setCellStyle(style2);cell.setCellValue(totals.get(i));}}*/}OutputStream out = response.getOutputStream(); workbook.write(out);

Invalid row number (65536) outside allowable range (0..65535)相关推荐

  1. C# Excel导出超出65536行报错 Invalid row number (65536) outside allowable range (0..65535)解决方法

    用Excel 2003格式创建Excel表格: HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个新的工作簿  HSSFSheet sheet = ( ...

  2. C# Excel导出超出65536行报错 Invalid row number (65536) outside allowable range (0..65535)

    C# Excel导出超出65536行报错 Invalid row number (65536) outside allowable range (0-65535) 一:报错 Invalid row n ...

  3. EasyExcel Invalid row number (65536) outside allowable range

    用了EasyExcel导出一个超过6万多行的表格,报了这个错 Invalid row number (65536) outside allowable range 网上搜了圈资料都说的啥玩意,什么分页 ...

  4. nginx: [error] invalid PID number ““ in “/app/nginx-1.16.0/logs/nginx.pid“

    测试Nginx负载均衡功能,在修改完配置文件后,重启Nginx失败,报错如下.(Nginx编译安装) [root@web01 conf]# nginx -s reload nginx: [error] ...

  5. 报SQL异常Parameter index out of range (1 > number of parameters, which is 0).

    数据库错误:Parameter index out of range (1 > number of parameters, which is 0). 错误发生原因其实很简单,就是当设置参数时,没 ...

  6. Parameter index out of range (1 > number of parameters, which is 0)

    数据库错误:Parameter index out of range (1 > number of parameters, which is 0). 参数索引超出范围. 出错原因: 初学者很常见 ...

  7. eclipse出现Parameter index out of range (1 number of parameters, which is 0)报错

    今天小蝈在做学生信息管理系统的时候,眼看大功告成,可谁能想运行后...啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊..一个bug....你们都懂...呃呃呃额额.... 话不多说,说多了都是痛,直接上 ...

  8. Type mismatch affecting row number 0 and column type 'BIGINT': Value [7] is of type [Integer] and c

     错误代码如下 org.springframework.dao.TypeMismatchDataAccessException: Type mismatch affecting row number ...

  9. nginx(No such file or directory与invalid PID number)

    1.启动 /usr/local/nginx/sbin/nginx 2.重启 /usr/local/nginx/sbin/nginx -s reload 3.关闭 /usr/local/nginx/sb ...

最新文章

  1. 穷清华,富北大,不要命的中科大,是什么意思?
  2. SSH 远程连接原理及故障排错详解
  3. 12-C语言排序算法
  4. python编程*三角形图形创意图片_python循环输出三角形图案的例子
  5. boost::units模块测试元函数 is_unit, is_quantity, is_dimension_list ....
  6. python字符编码在哪里_快速入手Python字符编码
  7. HYSBZ 1588 营业额统计 平衡二叉树模板
  8. stl中map函数_map :: empty()函数以及C ++ STL中的Example
  9. 5g存储服务器是什么项目,5G时代对服务器有什么要求?
  10. lvs负载均衡—ldirectord(DR模式的健康检查)
  11. 抖音音乐品牌升级 推出“炙热星河”音乐人服务平台
  12. RP2836 板卡信息标识
  13. 快播(Qvod)也开始耍流氓了
  14. matlab泰勒 习题,泰勒公式及其应用典型例题
  15. 角度值计算机符号,数学角度符号_请问各种数学符号的读音比如αβγδελζηθξσφψω等等的读音_淘题吧...
  16. 中国ERP三大流程 国外ERP黯然失色
  17. C++ OpenCV遍历并处理一个文件夹中的所有图片
  18. MSP430F149与ESP8266串口通信(中)
  19. 阿里云个人镜像仓库日常基本使用
  20. Xms Xmx Xss 释义

热门文章

  1. Android 在图片的指定位置添加标记
  2. 随机抽样的python实现
  3. 计算机的空间复用技术应用,MIMO技术的介绍
  4. 好好说话之Chunk Extend/Overlapping
  5. 一键还原涂鸦图片_涂鸦的图片可以复原吗
  6. 嵌入式开发语言-C语言编程
  7. 网易2018实习生招聘笔试题
  8. java换行转义字符串_回车,换行,转义字符“\r”,“\n”是什么关系?
  9. cesium加载entity图片缩放_教你使用最简单粗暴的js方法实现图片最小边展示
  10. 利用浏览器检查获取网页视频