在使用POI读取excel文件的时候,如果文件是从SQL Server 2000数据库导出的excel文件,在创建HSSFWorkbook对象的时候抛出异常,而如果对导出的文件稍微做修改(比如,添加一列,再删除添加的列)HSSFWorkbook对象就能正确的创建,大家有没有知道是什么原因的。
期待解决办法。

解决方案 »

  1.   

    把异常贴出来?
    或者你直接用jxl试试看!
      

  2.   

    异常如下: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:494)
    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:130)
    at com.land.struts.action.XLSToOracleAction.execute(XLSToOracleAction.java:89)
    at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:595)
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 11
    at org.apache.poi.util.LittleEndian.getNumber(LittleEndian.java:491)
    at org.apache.poi.util.LittleEndian.getInt(LittleEndian.java:139)
    at org.apache.poi.hssf.record.BOFRecord.fillFields(BOFRecord.java:133)
    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.BOFRecord.<init>(BOFRecord.java:98)
      

  3.   

     java.lang.ArrayIndexOutOfBoundsException列或者行为空? try {
    POIFSFileSystem ps = new POIFSFileSystem(stream);
    workbook = new HSSFWorkbook(ps);
    // 获取第一页的数据
    sheet = workbook.getSheetAt(0);
    rowcount = sheet.getLastRowNum();
    row = sheet.getRow(0);
    cell = row.getCell((short) 0);
    Comment = cell.getCellComment();
    if (Comment == null)
    throw new NullPointerException();
    } catch (Exception e) {

    }
      

  4.   

    听说office2000可以,楼主的是以上的版本?