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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 素数算法

    素数算法一、引言在平时做题目或者进行运算的时候,素数的出现次数总是十分频繁。这里总结了一些常见的判定素数和计算某个范围内素数个数的一些算法。部分代码来源于kuangbin的模板,嗯毕竟都是跟着这个学的…二、朴素判断素数算法就判断素数而言,事实上是非常简单的了。根据定义,判断一个整数n是否是素数,只需要去判断在整数区间[2,n-1]之内,是否具有某个数m,使得n%m==0。代码可以这么写:…

    2022年6月18日
    25
  • python中将字符串转化为数字_python字符串转int

    python中将字符串转化为数字_python字符串转intpython把字符串转化成数字的方法发布时间:2020-08-0317:03:31来源:亿速云阅读:82作者:清晨这篇文章将为大家详细讲解有关python把字符串转化成数字的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python中的int函数只能把整数字符串转换转换成整数另外可用于取出float的整数部分可以用float进行转换测试用例:>&gt…

    2025年6月7日
    5
  • Django(2)python虚拟环境virtualenvwrapper「建议收藏」

    Django(2)python虚拟环境virtualenvwrapper「建议收藏」python虚拟环境虚拟环境(virtualenvironment),它是一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机来把一部分内容独立出来,我们把这部分独立出来的东西

    2022年7月30日
    6
  • 404页面制作

    404页面制作router/index.js//引用模板importErrorfrom’../components/Error.vue’//配置路由exportdefault[{ path:’*’, component:Error} ]Error.vue<template> <div> {{msg}} 页面不存在 </div…

    2022年7月27日
    6
  • 随机梯度下降法和批量梯度下降法_梯度下降法优化

    随机梯度下降法和批量梯度下降法_梯度下降法优化深度学习最常用的优化方法就是随机梯度下降法,但是随机梯度下降法在某些情况下会失效,这是为什么呢?带着这个问题我们接着往下看。一个经典的例子就是假设你现在在山上,为了以最快的速度下山,且视线良好,你可以看清自己的位置以及所处位置的坡度,那么沿着坡向下走,最终你会走到山底。∑i=1n∇θf(θ;xi,yi)+∇θϕ(θ)\sum_{i=1}^{n}\nabla_{\theta}f\left(\theta;x_{i},y_{i}\right)+\nabla_{\theta}\phi(\theta

    2025年10月22日
    4
  • vs2017密钥激活_vs2017激活成功教程版安装教程

    vs2017密钥激活_vs2017激活成功教程版安装教程一般情况下要先安装IIS再装.NetFramework,这样可以保证.net的部分功能可以绑定到IIS,若安装顺序不对,可以后注册IIS,步骤如下:(1)在开始菜单中找到VS安装目录下的命令行提示符,以管理员身份运行。(2)输入IIS注册命令:aspnet_regiis-i

    2022年8月22日
    11

发表回复

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

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