poi3.7bug多 赶快用3.8吧 java.lang.ArrayIndexOutOfBoundsException: -32735

本文记录了使用Apache POI 3.7版本在Java JDK 6环境下读取Excel文件时遇到的ArrayIndexOutOfBoundsException异常。通过分析异常堆栈跟踪信息及提供的源代码,可以发现错误发生在尝试初始化单元格的过程中。本文探讨了可能的原因,并提供了相应的解决思路。

转自 http://topic.youkuaiyun.com/u/20110325/13/28347120-5632-4b31-8f23-eeea6672ce23.html

JDK版本:jdk-6u14-windows-i586.exe
POI版本:poi-bin-3.7-20101029.zip

错误信息:
java.lang.ArrayIndexOutOfBoundsException: -32735
at java.util.ArrayList.get(ArrayList.java:324)
at org.apache.poi.hssf.model.WorkbookRecordList.get(WorkbookRecordList.java:50)
at org.apache.poi.hssf.model.InternalWorkbook.getExFormatAt(InternalWorkbook.java:826)
at org.apache.poi.hssf.usermodel.HSSFCell.<init>(HSSFCell.java:198)
at org.apache.poi.hssf.usermodel.HSSFRow.createCellFromRecord(HSSFRow.java:204)
at org.apache.poi.hssf.usermodel.HSSFSheet.setPropertiesFromSheet(HSSFSheet.java:184)
at org.apache.poi.hssf.usermodel.HSSFSheet.<init>(HSSFSheet.java:121)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:275)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:188)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:170)
at com.sumavision.common.util.ExcelPOI.getExcleRows(ExcelPOI.java:45)
at com.sumavision.common.util.ExcelPOI.main(ExcelPOI.java:18)

源码:ExcelPOI .java
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
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.poifs.filesystem.POIFSFileSystem;

public class ExcelPOI {
public static void main(String[] args) {
try {
int count = ExcelPOI.getExcleRows("D:/2011.03.14-24.xls",0);
System.out.println("count="+count);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* Excle某个工作簿所有行数
 
* @param filePath
* Excel文件路径
* @param index
* 第一张工作表的索引是0
* @return int
* @throws FileNotFoundException
* @throws IOException
*/
public static int getExcleRows(String filePath, int index)
throws FileNotFoundException, IOException {
// 创建对Excel工作簿文件的引用
POIFSFileSystem fs =
  new POIFSFileSystem(new FileInputStream(filePath));
HSSFWorkbook workbook = new HSSFWorkbook(fs);
// 在Excel文档中,第一张工作表的缺省索引是0
// 其语句为:
HSSFSheet sheet = workbook.getSheetAt(index);
// HSSFSheet sheet = workbook.getSheet("Sheet1");
// 获取到Excel文件中的所有行数
return sheet.getPhysicalNumberOfRows();
}
}

 

 

10:09:26.463 [main] ERROR RuntimeLog -- [logger.KooLogServiceImpl.error:48] [import ppt convert node [{slideDocument}] failure, error: {] , java.lang.AssertionError: Temp frames mismanaged. Impossible stack frame. Unsynchronized fals-->java.util.concurrent.CompletionException-->java.util.concurrent.CompletableFuture.encodeThrowable:315; null-->java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) null-->java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) null-->java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1770) null-->java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java) null-->com.huawei.apaasinnovation.commonsdk.log.filter.ThreadPoolExecutorMdcWrapper.lambda$wrap$1(ThreadPoolExecutorMdcWrapper.java:66) null-->java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) null-->java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) null-->java.base/java.lang.Thread.run(Thread.java:842) Temp frames mismanaged. Impossible stack frame. Unsynchronized: fals-->java.lang.AssertionError-->org.apache.xmlbeans.impl.store.Locale.exit:2053; null-->org.apache.xmlbeans.impl.store.Locale.exit(Locale.java:2053) null-->org.apache.xmlbeans.impl.values.XmlObjectBase.newCursor(XmlObjectBase.java:282) null-->org.apache.poi.ooxml.util.XPathHelper.selectProperty(XPathHelper.java:113) null-->org.apache.poi.xslf.model.ParagraphPropertyFetcher.select(ParagraphPropertyFetcher.java:121) null-->org.apache.poi.xslf.model.CharacterPropertyFetcher.fetch(CharacterPropertyFetcher.java:55) null-->org.apache.poi.xslf.usermodel.XSLFShape.fetchShapeProperty(XSLFShape.java:337) null-->org.apache.poi.xslf.model.CharacterPropertyFetcher.fetchShapeProp(CharacterPropertyFetcher.java:93) null-->org.apache.poi.xslf.model.CharacterPropertyFetcher.fetchProperty(CharacterPropertyFetcher.java:69) null-->org.apache.poi.xslf.usermodel.XSLFTextRun.fetchCharacterProperty(XSLFTextRun.java:562) null-->org.apache.poi.xslf.usermodel.XSLFTextRun.isStrikethrough(XSLFTextRun.java:374) 这个爆什么错误
最新发布
08-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值