java.lang.Exception: java.lang.IllegalArgumentException: firstMovedIndex, lastMo

这两天系统在导出Excel(2003的版本,代码中的引用的API也是针对03版的Excle)数据时,老是报java.lang.Exception: java.lang.IllegalArgumentException: firstMovedIndex, lastMovedIndex out of order 错误,导致无法正常导出Excel。网上查了一下,大部分都是说POI的版本问题,需要用POI 3.9的jar包。 经过昨晚的熬夜核查,发现修改一下方法即可以正常导出。


源代码:
HSSFSheet ws = wb.getSheetAt(i);
ws.shiftRows(j+dataStartRow, ws.getPhysicalNumberOfRows(), 1, true, false);


修改shiftRows方法中的参数:
HSSFSheet ws = wb.getSheetAt(i);
ws.shiftRows(j+dataStartRow, ws.getLastRowNum(), 1, true, false);


即将ws.getPhysicalNumberOfRows()替换为 ws.getLastRowNum()。


控制台原抛出的异常如下:

DEBUG - accept:image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/QVOD, application/QVOD, application/x-ms-application, application/x-ms-xbap, applicacookie:JSESSIONID=6127F149506B190A49849E7A1B19DF17; COOKIE_TOKEN_KEY=%2Bvn7EYVidpGMPvEx8AoxjyDKP3RevgA4Q7AWFOsfPr1Wjfr%2BL3kwKwFdjygoU5%2BNunJ3zszCHahJ0kskpKb%2B9g%3D%3DPath.2)
reportGroupBeanVo.reportGroupId:??????406
DEBUG - java.lang.Exception: java.lang.IllegalArgumentException: firstMovedIndex, lastMovedIndex out of order
at com.eshore.common.web.interceptor.ExceptionInterceptor.intercept(ExceptionInterceptor.java:95)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.eshore.ssoclient.web.ModcompsFilter.doFilter(ModcompsFilter.java:101)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.eshore.ssoclient.web.SSOFilter.doFilter(SSOFilter.java:295)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.eshore.ssoclient.web.OASSOFilter.doFilter(OASSOFilter.java:184)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
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:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: firstMovedIndex, lastMovedIndex out of order
at org.apache.poi.ss.formula.FormulaShifter.<init>(FormulaShifter.java:56)
at org.apache.poi.ss.formula.FormulaShifter.createForRowShift(FormulaShifter.java:81)
at org.apache.poi.hssf.usermodel.HSSFSheet.shiftRows(HSSFSheet.java:1411)
at org.apache.poi.hssf.usermodel.HSSFSheet.shiftRows(HSSFSheet.java:1262)
at com.eshore.ppm.action.imusic.ReportGroupAction.reportExport(ReportGroupAction.java:258)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
at org.apache.struts2.interceptor.de
DEBUG - Executing prepared SQL update


@xuyanxilu.pudongqu.shanghai 2014-07-02 12:55
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值