Invalid row number (65536) outside allowable range (0..65535)

Invalid row number (65536) outside allowable range (0..65535)《 outsideallowablerange》异常信息:   Invalidrownumber(65536)outsideallowablerange(0..65535)   今天突然接到客户通知,说使用项目中的导出功能导出的Excel文件,打开时看不到业务数据,要求立即处理一下。我打开Excel看了一下,导致的错误信息如

大家好,又见面了,我是你们的朋友全栈君。


《  outside allowable range 》


异常信息:
      Invalid row number (65536) outside allowable range (0..65535)

      今天突然接到客户通知,说使用项目中的导出功能导出的 Excel 文件,打开时看不到业务数据,要求立即处理一下。

      期间你可能需要准备两个 Jar 包: Servlet jar 包 和 POI jar 包

  
我打开 Excel 看了一下,导致的错误信息如下图所示:

Invalid row number (65536) outside allowable range (0..65535)

      如上图信息所示可知,Excel 的 Sheet超出了允许的范围;这是关于 《Java POI 导出 Excel 文件 》时遇到异常情况。


解决办法:
将原来的 POI 导出 Excel 的工具类,修改并加入如下内容即可完美的解决了,完全替换原来的 Util 也可以,下面的片段代码也是我在原来代码的基础新加的:

Java POI 导出 Excel 的工具类

package com.etc.bus.carpark.utils;

import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.Region;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.etc.bus.carpark.utils.IntegerToChineseNumberUtils;
import com.etc.third.tlq.bean.StopInThePayment;

/**
 * 数据导出为Excel工具类
 * 

* * @ClassName : ExportExcelUtils *

*

* @Description : TODO *

*

* @Author : HuaZai *

*

* @ContactInformation : 1461522031@qq.com/huazai6789@aliyun.com *

*

* @Date : 2017年10月20日 上午10:01:22 *

* *

* @Version : V1.0.0 *

* */ @SuppressWarnings({ "serial", "deprecation" }) @Component public class ExportExcelUtil extends HttpServlet { // 阿拉伯数字转中文数字 @Autowired private IntegerToChineseNumberUtils toChineseNuber; /** * *

* * @throws UnsupportedEncodingException * * @Title : exportPayment *

*

* @Description : TODO *

*

* @Author : HuaZai *

*

* @Date : 2017年10月23日 上午10:12:02 *

*/ @SuppressWarnings({ "static-access" }) public void exportPayment(HttpServletRequest request, HttpServletResponse response, List dataSet, String[] headers) throws UnsupportedEncodingException { // 声明一个工作簿 HSSFWorkbook wb = new HSSFWorkbook(); // 设置下载时弹出框 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("application/vnd.ms-excel;charset=utf-8"); String fileName = "临停缴费"; response.addHeader("Content-Disposition", "attachment;filename=" + new String((fileName + ".xls").getBytes(), "iso-8859-1")); // 获取需要设置 Excel 的 Sheet 总页数 int dataCount = dataSet.size(); int page = dataCount % 10000; int pageNo; if (page == 0) { pageNo = dataCount / 10000; } else { pageNo = dataCount / 10000 + 1; } // 设置 Sheet 的页数,当数据 超过 10000 条时 将数据 设值到下一个 Sheet for (int i = 1; i <= pageNo; i++) { // 在 Excel 中声明一个 Sheet HSSFSheet sheet = wb.createSheet(); HSSFRow row1 = sheet.createRow(0); row1.setHeight((short) 800); // 创建表头单元格 HSSFCell cell1 = row1.createCell(0); cell1.setCellValue("临停缴费记录报表(" + toChineseNuber.ToCH(i) + ")"); // 设置字体 HSSFFont font = wb.createFont(); // 字体高度 font.setFontHeightInPoints((short) 20); // 字体颜色 font.setColor(HSSFFont.COLOR_NORMAL); // 字体类型 font.setFontName("仿宋"); // 字体宽度 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 设置单元格类型 HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setFont(font); // 水平居中 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 垂直居中 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); cellStyle.setWrapText(true); // 设置单元格样式 cell1.setCellStyle(cellStyle); // 创建内容单元格 HSSFRow row = sheet.createRow(1); // 设置行高 row.setHeight((short) 400); // 设置没列的宽度 sheet.setColumnWidth(0, 3000); sheet.setColumnWidth(1, 5000); sheet.setColumnWidth(2, 4000); sheet.setColumnWidth(3, 5000); sheet.setColumnWidth(4, 6000); sheet.setColumnWidth(5, 6000); sheet.setColumnWidth(6, 6000); sheet.setColumnWidth(7, 6000); sheet.setColumnWidth(8, 6000); sheet.setColumnWidth(9, 6000); sheet.setColumnWidth(10, 6000); sheet.setColumnWidth(11, 6000); // 设置字体样式 HSSFFont fontlast = wb.createFont(); // 字体高度 fontlast.setFontHeightInPoints((short) 12); // 字体颜色 fontlast.setColor(HSSFFont.COLOR_NORMAL); // 字体类型 fontlast.setFontName("宋体"); HSSFCellStyle style = wb.createCellStyle(); style.setFont(fontlast); // 水平居中 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 垂直居中 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setWrapText(true); // 设值表头值 for (int k = 0; k < headers.length; k++) { HSSFCell cell = row.createCell(k); cell.setCellValue(headers[k]); cell.setCellStyle(cellStyle); } // 准备数据集合 List stopInThePayments = dataSet; // 当每个 Sheet 写满 10000 条数据 时,新建并写入下一个 Sheet for (int j = 10000 * i - 10000; j < 10000 * i && j < dataCount; j++) { row = sheet.createRow(j - 10000 * i + 10002); StopInThePayment stopInThePayment = stopInThePayments.get(j); HSSFCell cell = row.createCell(0); cell.setCellValue(j + 1);// 编号 cell.setCellStyle(style); cell = row.createCell(1); cell.setCellValue(stopInThePayment.getName());// 停车场名称 cell.setCellStyle(style); cell = row.createCell(2); cell.setCellValue(stopInThePayment.getOutcarno());// 车牌号 cell.setCellStyle(style); cell = row.createCell(3); cell.setCellValue(stopInThePayment.getTime());// 停车时长 cell.setCellStyle(style); cell = row.createCell(4); cell.setCellValue(stopInThePayment.getPaymoney());// 应收金额 cell.setCellStyle(style); cell = row.createCell(5); cell.setCellValue(stopInThePayment.getAgiomoney());// 优惠金额 cell.setCellStyle(style); cell = row.createCell(6); cell.setCellValue(stopInThePayment.getCharmoney());// 实收金额 cell.setCellStyle(style); cell = row.createCell(7); cell.setCellValue(stopInThePayment.getType());// 缴费方式 cell.setCellStyle(style); cell = row.createCell(8); cell.setCellValue(stopInThePayment.getFreestatus());// 缴费状态 cell.setCellStyle(style); cell = row.createCell(9); cell.setCellValue(stopInThePayment.getOutoperationtime());// 缴费时间 cell.setCellStyle(style); cell = row.createCell(10); cell.setCellValue(stopInThePayment.getOutmemo());// 备注 cell.setCellStyle(style); } // 设置 Sheet 的合并范围 Region region = new Region(0, (short) 0, 0, (short) (10)); sheet.addMergedRegion(region); } try { OutputStream out = response.getOutputStream(); wb.write(out); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } }


 链接到 《 阿拉伯数字转中文数字 》 

好了,经过上面的内容修改后,关于 “ outside allowable range ” 超出 Excel 的 Sheet 允许范围的异常情况。
太累了,不写了,我先去码我的代码去了,如果期间还遇到其它问题,可以给我留言,一起探讨。
也希望大家多多关注CSND的IT社区。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146033.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 实用软件资源下载地址集合「建议收藏」

    实用软件资源下载地址集合「建议收藏」1、文库、音乐、视频下载类软件:(视频下载软件)稞麦下载地址:http://rj.baidu.com/soft/detail/10712.html?ald维棠下载地址:http://www.vidown.cn/(文档下载软件)冰点文库下载地址:http://rj.baidu.com/soft/detail/23385.html?ald(音频下载软件)酷狗下载地址:http://rj.baidu….

    2022年5月1日
    206
  • phpstrom2021激活码【注册码】

    phpstrom2021激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    40
  • 网络营销推广案例ppt_网络营销和推广的方法

    网络营销推广案例ppt_网络营销和推广的方法电驴资源下面是用户共享的文件列表,安装电驴后,您可以点击这些文件名进行下载一┳═┻︻▃内容简介处附有网盘快速下载通道▃︻┻═┳一[实战网络营销.网络推广经典案例战术解].扫描版.张书乐.pdf详情68.1MB全选68.1MB下载地址(拷贝到电驴或者迅雷即可下载):ed2k://|file|%5B%E5%AE%9E%E6%88%98%E7%BD%91%E7%BB%9C%E8%9…

    2022年10月19日
    1
  • 排序算法小结

    排序算法小结

    2021年11月27日
    45
  • USB 驱动彻底删除「建议收藏」

    USB 驱动彻底删除「建议收藏」最近做USB自定义设备开发,遇到以下问题,应该算是解决了,特地写出来和大家分享。在进行USB设备开发的时候,经常需要更改USB设备的名称或者pid、vid等,特别是进行自定义USB设备,自己写驱动程序的时候,会出现一个问题就是:设计了一个USB设备,插到电脑上通过安装驱动可以正常试用。后来修改了USB设备的设备名称pid、vid,再插上电脑,还是显示原来的设备名称

    2022年10月20日
    2
  • django修改数据_django-vue-admin

    django修改数据_django-vue-admin前言在ORM框架中,所有模型相关的操作,比如添加/删除等。其实都是映射到数据库中一条数据的操作。因此模型操作也就是数据库表中数据的操作。添加一个模型到数据库中:添加模型到数据库中。首先需要创建一

    2022年7月28日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号