在网络上看到POI比较好用,并且功能强大,今天下了个POI准备使用下,但是在写好代码后运行时候出现此问题,请各位高手指教.JDK 版本 
  java version "1.5.0"
  Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
  Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)
POI 版本
  poi-bin-3.5-beta4-20081128.zip测试代码为:
package com.test.poi;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;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 TestReadExcel {
/**
 * 读取Excel文件
 */
@SuppressWarnings("deprecation")
public static void main(String[] args) {
//先生成一个POIFSFileSystem
try {
POIFSFileSystem fs=new POIFSFileSystem(new FileInputStream("d:\\file.xls"));
HSSFWorkbook wb=new HSSFWorkbook(fs);
HSSFSheet sheet=wb.getSheetAt(0);
HSSFRow row=sheet.getRow(0);//0行
HSSFCell cell=row.getCell((short)0);//获取单元格子
String msg=cell.getStringCellValue();
System.out.println(msg);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {

}
}
}经过检查Excel文件 file.xls 正确无错误,并且尝试删除该文件后重新建立,一样的报错.所报异常:
  Exception in thread "main" java.lang.RuntimeException: Expected an EXTERNSHEET record but got (org.apache.poi.hssf.record.SSTRecord)
at org.apache.poi.hssf.model.LinkTable.readExtSheetRecord(LinkTable.java:188)
at org.apache.poi.hssf.model.LinkTable.<init>(LinkTable.java:164)
at org.apache.poi.hssf.model.Workbook.createWorkbook(Workbook.java:199)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:277)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:200)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:182)
at com.test.poi.TestReadExcel.main(TestReadExcel.java:22)请各位高手指教,谢谢大家!

解决方案 »

  1.   

    警告: Unhandled Exception thrown: class java.lang.RuntimeException
    javax.servlet.ServletException: Expected an EXTERNSHEET record but got (org.apache.poi.hssf.record.SSTRecord)
    at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at rs.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:36)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at rs.filters.TimeOutFilter.doFilter(TimeOutFilter.java:38)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:595)这是什么问题呢?大家看看。