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


相关推荐

  • srvctl命令_srvctl命令

    srvctl命令_srvctl命令添加删除ASMCommand:srvctladdasm[-llsnr_name][-pspfile][-dasm_diskstring]Command:srvctlremoveasm-l[-f]Example:srvctladdasm-lLISTENER_ASM01-p+diskg_data/spfile.oraExample:srvctlremoveasm-lLISTENER_ASM01-f启动停

    2022年9月11日
    0
  • qmake:配置qmake

    qmake:配置qmake一、属性qmake有一个持久化配置系统,它允许在qmake中设置一次属性,并在每次调用qmake时查询它。可以在qmake中设置一个属性:qmake-setPROPERTYVALUE您可以从qmake检索此信息,如下所示:qmake-queryPROPERTYqmake-query//列出内置属性以下是内置属性:QMAKE_SPEC:在主机构建期间解析并存储在QMAKESPEC变量中的主机mkspec的短名称

    2022年5月19日
    64
  • android sdk安装过程,图文详解Android 3.0 SDK安装教程

    android sdk安装过程,图文详解Android 3.0 SDK安装教程【51CTO编者按】我们已经为喜欢Android3.0的朋友提供Android3.0SDK下载,本文我们将向大家介绍Android3.0SDK安装教程,本教程与玩模拟器需要比较好的电脑配置,建议至少要i系列CPU,即使如此还是会经常卡,只建议给那些想尝鲜的和只想玩系统的朋友。一、准备阶段:1.安装JavaJDK2.进入“控制面板”-“系统”-“高级系统设置”在弹出的窗口中,选择“环境…

    2022年7月21日
    11
  • Android端 WebP图片压缩与传输的一点探索

    Android端 WebP图片压缩与传输的一点探索简介直到4g时代,流量依然是宝贵的东西。而移动网络传输中,最占流量的一种载体:图片,成为了我们移动开发者不得不关注的一个问题。我们关注的问题,无非是图片体积和质量如何达到一个比较和谐的平衡,希望得到质量不错的图片同时体积还不能太大。走在时代前列的谷歌给出了一个不错的答案——WebP。WebP是一种图片文件格式,在相同的压缩指标下,webp的有损压缩能比jpg小25-34%。而在

    2025年5月25日
    0
  • jetbrains2021全家桶永久激活码[最新免费获取]

    (jetbrains2021全家桶永久激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsa…

    2022年3月26日
    323
  • 最长递增子序列的三种算法

    最长递增子序列的三种算法转载自:http://qiemengdao.iteye.com/blog/1660229最长递增子序列 问题给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5,6,7,1,2,8},则其最长的单调递增子序列为{5,6,7,8},长度为4.解法1:最长公共子序列法这个问题

    2022年4月29日
    52

发表回复

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

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