JAVA使用POI读取EXCEL错误

lzm1991520 2012-01-16 01:54:52
一讀取EXCEL就會拋出如下異常

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFactory.java:224)
at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:160)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:163)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:210)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:191)
at com.emis.app.pbo.dep.emisQuoteExcelToDB.quoteExcelToDb(emisQuoteExcelToDB.java:63)
at com.emis.app.pbo.dep.emisQuoteExcelToDB.<init>(emisQuoteExcelToDB.java:47)
at _jsp._dep._bestdaybp_0upload_0xls__jsp._jspService(_bestdaybp_0upload_0xls__jsp.java:96)
at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
at com.caucho.jsp.Page.subservice(Page.java:506)
at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)
at com.caucho.server.http.Invocation.service(Invocation.java:315)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:164)
at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.apache.poi.hssf.record.UnknownRecord.<init>(UnknownRecord.java:62)
at org.apache.poi.hssf.record.SubRecord.createSubRecord(SubRecord.java:57)
at org.apache.poi.hssf.record.ObjRecord.fillFields(ObjRecord.java:99)
at org.apache.poi.hssf.record.Record.fillFields(Record.java:90)
at org.apache.poi.hssf.record.Record.<init>(Record.java:55)
at org.apache.poi.hssf.record.ObjRecord.<init>(ObjRecord.java:61)
... 21 more

經過調試是 HSSFWorkbook hssfWorkbook = new HSSFWorkbook(inStream);錯誤,請大神幫助
...全文
292 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvfeng19806001 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 lzm1991520 的回复:]

引用 18 楼 fytq813 的回复:
.....................
那么老的包都能找到,牛人啊

我維護的這個項目是很老以前的 現在一大把麻煩事...哎
[/Quote]
共勉下,我最近也在改一个项目,。net项目,用的NPOI
lzm1991520 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 fytq813 的回复:]
.....................
那么老的包都能找到,牛人啊
[/Quote]
我維護的這個項目是很老以前的 現在一大把麻煩事...哎
fytq813 2012-01-16
  • 打赏
  • 举报
回复
.....................
那么老的包都能找到,牛人啊
lzm1991520 2012-01-16
  • 打赏
  • 举报
回复
终于解决了 原来是这个项目读取EXCEL的POI相关JAR包太老旧了..我看了 还是2004年的版本的包
fytq813 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 lzm1991520 的回复:]
引用 13 楼 fytq813 的回复:

你直接写另外写个测试,就写这一句,把你那路径创建inputStream试试,那句走不通,个人觉得有可能是excel文件或者其内容的原因吧。

創建inputStream 這個能走通。。就是new HSSFWorkbook的時候就拋出異常了
[/Quote]
无语了,创建inputStream当然能走通,我是说,你单独写一个测试,用那个路径创建的inputStream来构造HSSFWorkbook,看行不行,实在不知道怎么找错的话,你就把源码下下来,导入,debug
lzm1991520 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 fytq813 的回复:]

你直接写另外写个测试,就写这一句,把你那路径创建inputStream试试,那句走不通,个人觉得有可能是excel文件或者其内容的原因吧。
[/Quote]
創建inputStream 這個能走通。。就是new HSSFWorkbook的時候就拋出異常了
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lzm1991520 的回复:]

引用 10 楼 lxwankkk 的回复:

引用 9 楼 lzm1991520 的回复:

引用 8 楼 lxwankkk 的回复:

引用 6 楼 lzm1991520 的回复:

引用 5 楼 lxwankkk 的回复:

引用 4 楼 lzm1991520 的回复:

引用 3 楼 runffer_yang 的回复:

java.lang.ArrayIndex……
[/Quote]
那就= =~~
这个xls文件的编码格式,内容是否完整都有可能出问题。
是所有xls文件都会报错吧?
帮顶下 等个高手吧
fytq813 2012-01-16
  • 打赏
  • 举报
回复
你直接写另外写个测试,就写这一句,把你那路径创建inputStream试试,那句走不通,个人觉得有可能是excel文件或者其内容的原因吧。
lzm1991520 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 lxwankkk 的回复:]

引用 9 楼 lzm1991520 的回复:

引用 8 楼 lxwankkk 的回复:

引用 6 楼 lzm1991520 的回复:

引用 5 楼 lxwankkk 的回复:

引用 4 楼 lzm1991520 的回复:

引用 3 楼 runffer_yang 的回复:

java.lang.ArrayIndexOutOfBoundsException
数组下……
[/Quote]
454Kb大小
lzm1991520 2012-01-16
  • 打赏
  • 举报
回复
454K
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lzm1991520 的回复:]

引用 8 楼 lxwankkk 的回复:

引用 6 楼 lzm1991520 的回复:

引用 5 楼 lxwankkk 的回复:

引用 4 楼 lzm1991520 的回复:

引用 3 楼 runffer_yang 的回复:

java.lang.ArrayIndexOutOfBoundsException
数组下标越界。
emisQuoteExcelToDB.j……
[/Quote]
几M的excel文档?
lzm1991520 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lxwankkk 的回复:]

引用 6 楼 lzm1991520 的回复:

引用 5 楼 lxwankkk 的回复:

引用 4 楼 lzm1991520 的回复:

引用 3 楼 runffer_yang 的回复:

java.lang.ArrayIndexOutOfBoundsException
数组下标越界。
emisQuoteExcelToDB.java:63行,
大概是数组拷贝时候数组没有开……
[/Quote]

我测试过,上传到本地服务器后,得到的路径是绝对路径, 可不知道为什么 在New HSSFWorkbook 就一直抛异常
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lzm1991520 的回复:]

引用 5 楼 lxwankkk 的回复:

引用 4 楼 lzm1991520 的回复:

引用 3 楼 runffer_yang 的回复:

java.lang.ArrayIndexOutOfBoundsException
数组下标越界。
emisQuoteExcelToDB.java:63行,
大概是数组拷贝时候数组没有开到足够大。

可是我的63行代碼是 hssfW……
[/Quote]
即使是服务器本地也有绝对路径的嘛
java.lang.reflect.InvocationTargetException 这应该是poi使用时抛出的异常
要不你先测试一个简单的demo?
确定没错……?
lzm1991520 2012-01-16
  • 打赏
  • 举报
回复
。。。。。高人呢?
lzm1991520 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lxwankkk 的回复:]

引用 4 楼 lzm1991520 的回复:

引用 3 楼 runffer_yang 的回复:

java.lang.ArrayIndexOutOfBoundsException
数组下标越界。
emisQuoteExcelToDB.java:63行,
大概是数组拷贝时候数组没有开到足够大。

可是我的63行代碼是 hssfWorkbook = new HSSFWorkbo……
[/Quote]
我是先把EXCEL文件上傳到服務器本地來讀取..我看了一下 路徑是正確的
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lzm1991520 的回复:]

引用 3 楼 runffer_yang 的回复:

java.lang.ArrayIndexOutOfBoundsException
数组下标越界。
emisQuoteExcelToDB.java:63行,
大概是数组拷贝时候数组没有开到足够大。

可是我的63行代碼是 hssfWorkbook = new HSSFWorkbook(inStream); 就是這行走不過
[/Quote]

String FileURL = ""; //文件的真实路径
hssfWorkbook = new HSSFWorkbook(new POIFSFileSystem(new FileInputStream(FileURL)));
lzm1991520 2012-01-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 runffer_yang 的回复:]

java.lang.ArrayIndexOutOfBoundsException
数组下标越界。
emisQuoteExcelToDB.java:63行,
大概是数组拷贝时候数组没有开到足够大。
[/Quote]
可是我的63行代碼是 hssfWorkbook = new HSSFWorkbook(inStream); 就是這行走不過
Steve 2012-01-16
  • 打赏
  • 举报
回复
java.lang.ArrayIndexOutOfBoundsException
数组下标越界。
emisQuoteExcelToDB.java:63行,
大概是数组拷贝时候数组没有开到足够大。
lzm1991520 2012-01-16
  • 打赏
  • 举报
回复
难道JAVA论坛人才凋零了????

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧