我的工作簿中有4张(让 AA , BB , CC & DD )。我有以下要求:我想删除工作表 BB ,并希望插入新工作表 BB_Error 。
我可以使用"my_workbook.removeSheetAt(index);"
删除 BB 表。还可以使用"my_workbook.createSheet("BB_Error");"
创建新工作表。
现在,我使用了"my_workbook.setSheetOrder("BB_Error", index);"
来重新排序新创建的工作表。当我调试代码时,工作簿正在生成,但是,当我运行我的代码时,我收到以下错误:
无法运行'createExcel' java.lang.IllegalArgumentException:计算的结束索引(888984)超出允许范围(888980..888983)
java.lang.IllegalArgumentException:计算的结束索引(888984)超出允许范围(888980..888983) 在org.apache.poi.util.LittleEndianByteArrayOutputStream。(LittleEndianByteArrayOutputStream.java:41) 在org.apache.poi.hssf.record.StandardRecord.serialize(StandardRecord.java:45) 在org.apache.poi.hssf.usermodel.HSSFWorkbook $ SheetRecordCollector.serialize(HSSFWorkbook.java:1259) at org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:1305) 在org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1205) 在lavika.createExcel(lavika.java:733) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) 在com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:443) 在com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:648) 在com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39) 在com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:49) 在com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243) 在com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49) 在com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171) 在com.wm.app.b2b.server.ACLManager.process(ACLManager.java:303) 在com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:34) 在com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:375) 在com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:547) 在com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:386) 在com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:238) 在com.wm.app.b2b.server.comm.DefaultServerRequestHandler.handleMessage(DefaultServerRequestHandler.java:119) 在com.wm.app.b2b.server.HTTPMessageHandler.process(HTTPMessageHandler.java:164) 在com.wm.app.b2b.server.HTTPDispatch.handleRequest(HTTPDispatch.java:170) 在com.wm.app.b2b.server.Dispatch.run(Dispatch.java:362) 在com.wm.util.pool.PooledThread.run(PooledThread.java:127) 在java.lang.Thread.run(Thread.java:745)
有人可以救我这个吗?提前谢谢!
答案 0 :(得分:0)
这是我的代码:
if(resultAssessed.equalsIgnoreCase("true")&& code.equals("-1")) {
if(sheetName.equalsIgnoreCase("ABC")) {
int index = my_workbook.getSheetIndex("ABC");
if(index >=0)
my_workbook.removeSheetAt(index);
Sheet errorSheet= my_workbook.createSheet("ABC_Error");
my_workbook.setSheetOrder("ABC_Error",index);
Row row = errorSheet.createRow(3);
Cell cell = row.createCell(1);
cell.setCellValue("Error in Data");
errorSheet.addMergedRegion(new CellRangeAddress(3,3,1,4));
}
}
else {
if(sheetName.equalsIgnoreCase("ABC")){
int index = my_workbook.getSheetIndex("ABC");
if(index >=0)
my_workbook.removeSheetAt(index);