`

JXL2.6:解决JXL的IndexOutOfBoundsException getSheet问题

    博客分类:
  • Java
阅读更多
JXL2.6修复版本最新下载:http://dl.iteye.com/topics/download/4662fd6c-4dee-3dba-ac12-509ff9323258
特别说明:出现此问题是在和SpringMVC结合出现的,
请见:SpringMVC:生成Excel和PDFhttp://liuzidong.iteye.com/blog/1071823

参考资料
1 jxl java.lang.IndexOutOfBoundsException: Index: 21, Size: 21
http://blog.sina.com.cn/s/blog_5349193d0100mf2h.html
但是没有用呀!可能由于jxl的版本不同中,我用的是: 2.6的
说明:JXL的功能使用正常,但是后台报错,下载它的最新版本也一样,将它的源代码检查,发现少了NULl值的判断
报错如下:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at jxl.write.biff.WritableWorkbookImpl.getSheet(WritableWorkbookImpl.java:382)
at jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:825)
at org.springframework.web.servlet.view.document.AbstractJExcelView.renderMergedOutputModel(AbstractJExcelView.java:143)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:595)

修复源码二处
1 在源代码的方法: getSheet()如下
public WritableSheet getSheet(int index){
	
    return (WritableSheet) sheets.get(index);
  }

  修改如下:
 
 public WritableSheet getSheet(int index)
  {
	int size = sheets.size();	
	if(null == sheets || size == 0){
		return null;
	}
    return (WritableSheet) sheets.get(index);
  }

  增加了集合为空的判断
  2 在源代码的方法:write()方法体中:
 
if (!sheetSelected)
    {
      wsheet = (WritableSheetImpl) getSheet(0);
      wsheet.getSettings().setSelected(true);
      selectedSheetIndex = 0;
    }

    修复如下:
   
if (!sheetSelected)
    {
      wsheet = (WritableSheetImpl) getSheet(0);
      if(wsheet != null)
    	  wsheet.getSettings().setSelected(true);
      selectedSheetIndex = 0;
    }

    由于上面报错有二个地方,所以只修改这二个有BUG的方法体.完成后将源代码重新打包为:jexcelapi_2_6_12_1.jar,将它置于WEB-INF/lib下运行OK
请大家下载附件的jexcelapi_2_6_12_1.jar包
分享到:
评论
2 楼 liuzidong 2011-09-01  
谢谢你的指出!
    public WritableSheet getSheet(int index)  
     {      
    if(null == sheets || 0 == sheets.size()){  
        return null;  
    }  
       return (WritableSheet) sheets.get(index);  
     }  
1 楼 cryolite 2011-08-31  
int size = sheets.size();    
if(null == sheets || size == 0){ 

你这改的代码明显有问题

相关推荐

    jxl 2.6 API.chm下载

    这是java操作excel的jxl2.6的API,chm格式的

    jxl.jar包(2.6).zip

    jxl.jar是通过java操作excel表格的工具类库,开发过程中经常需要用到数据的导入导出功能,之前用的是POI,这次使用JXL,JXL相对于POI来说要轻量简洁许多,在数据量不大的情况下还是非常实用的。

    jxl 2.6 jar

    另外,如前所述,JXL只支持.xls格式,对于.xlsx格式,需要寻找其他解决方案,如Apache POI。 ### 实际应用场景 JXL在各种场景下都有用武之地,例如: - **数据导入导出**:在Web应用中,用户可能需要导入Excel...

    jxl-2.6.jar

    jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Java的, 并不 依赖...

    使用jxl技术:jxl教程

    使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事。在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是在...

    jxl-2.6.jar包和常用方法例子

    jxl-2.6.jar包和常用方法例子 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel...

    jxl-2.6.12.zip

    在Java开发中,处理Excel文件是一项常见的任务,而JXL库为开发者提供了强大且高效的解决方案。标题中的"jxl-2.6.12.zip"正是这样一个专门用于读写Microsoft Excel文件的Java库的压缩包,版本号为2.6.12。这个库不仅...

    关于jxl操作excel说明以及jxl.jar包下载2.6

    标题"关于jxl操作excel说明以及jxl.jar包下载2.6"表明我们将探讨如何使用JXL库以及在哪里获取它的特定版本(2.6)。 首先,让我们深入了解一下JXL库。JXL是Java Excel API的简称,它提供了一套完整的API,可以创建...

    jxl.jar包(java导入导出Excel文件)

    **Java Excel工具包——jxl.jar** 在Java编程中,处理Excel文件是一项常见的任务,尤其在数据导入导出、报表生成或数据分析等场景下。jxl.jar是一个专门为Java设计的库,它允许开发者轻松地读取、写入和修改Excel...

    jxl-2.6.10.jar包

    在Java编程领域,处理Excel数据是一项常见的任务,而jxl库则为此提供了强大的解决方案。本文将深入探讨jxl-2.6.10.jar包,它是jxl库的一个版本,特别关注其在读写Excel文件方面的功能,以及如何利用`importSheet`...

    jxl-2.6.jar.zip(613 k).ZIP

    标题中的"jxl-2.6.jar.zip"表明这是一个压缩文件,其中包含了版本为2.6的jxl库。jxl是一个用Java编写的库,主要用于读取和写入Microsoft Excel文件。它允许开发者在Java应用程序中处理Excel数据,而无需依赖于Excel...

    jxl-2.6.12.jar

    jxl-2.6.12.jar,用于读取和写入Excel文件, JExcelApi is a java library which provides the ability to read, write, and modify Microsoft Excel spreadsheets.

    NoClassDefFoundError: jxl/WorkbookSettings

    在这个特定的情况下,`jxl` 提示我们问题可能与JExcelApi库有关,这是一个用于读写Excel文件的Java库。 JExcelApi是一个流行的开源Java库,允许开发者处理Microsoft Excel文件,包括读取、写入和修改数据。`...

    jxl.jar原版、修改后的jxl.jar解决web dynpro中乱码问题

    【标题】"jxl.jar原版、修改后的jxl.jar解决web dynpro中乱码问题"涉及的关键技术点主要集中在两个方面:一是Java的jar包处理,二是Web Dynpro组件与Excel数据交互时的字符编码问题。下面将对这两个主题进行深入的...

    jxl.jar,poi-3.0.1-FINAL.rar

    这里提到的"jxl.jar"和"poi-3.0.1-FINAL.rar"是两个用于Java平台的库,分别用于读写Excel文件。 1. **jxl.jar**: jxl库是一个Java API,主要用于读取和写入Microsoft Excel格式的文件。它提供了丰富的功能,包括...

    解决JXL调用copySheet()和importSheet()方法时报异常的jar包

    at jxl.write.biff.WritableSheetCopier.shallowCopyCells(WritableSheetCopier.java:499) [jxl.ja r:na] at jxl.write.biff.WritableSheetCopier.copySheet(WritableSheetCopier.java:239) [jxl.jar:na] at ...

    jxl.zip_excel_jxl_jxl.biff.drawing.dg_jxl.biff.drawingdg

    《深入解析JXL:Java与Excel的不解之缘》 在IT行业中,处理Excel数据是一项常见的任务,无论是数据导入、导出还是分析,都离不开与Excel的交互。JXL库作为一个强大的工具,为Java开发者提供了方便快捷的方式来读取...

Global site tag (gtag.js) - Google Analytics