您现在的位置: 爱51代码网 >> 范文 >> 文章正文
POI 导入Excel 提示LeftoverDataException

POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream(file));               HSSFWorkbook workBook= new HSSFWorkbook(fs);                org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x894 left 7 bytes remaining still to be read.           at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:156)           at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:231)           at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:443)           at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:285)           at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:248)           at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:192)           at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:174) 

贴了,就这两行代码
第二行代码
HSSFWorkbook workBook= new HSSFWorkbook(fs); 

就报错了。。。

不知道为什么?也不是所有的情况都报错,大部分情况是正常的。
org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x894 left 7 bytes remaining still to be read. 
  報這個錯說明通過這個Excel文件來構建它的數據單元(record)時報錯,初始化0x894(可能是序號可能是地址) record時還剩7字節未讀取,說明該excel文件該部份不合它的規範,具體錯在哪還得看了

一些老的excel版本比如2007之前可能會有問題,另外據說另存一下可能也可以解決問題 可能会是excel的格式问题,有时候excel能打开,但是用程序读的时候可能会出错,另存一下可能可以解决

重写了POI 中的RecordInputSream.java , 3.7,3.8 重写后都OK

重写的方法为
  public boolean hasNextRecord() throws LeftoverDataException {         if (_currentDataLength != -1 && _currentDataLength != _currentDataOffset) {             readToEndOfRecord();         }         if (_currentDataLength != DATA_LEN_NEEDS_TO_BE_READ) {             _nextSid = readNextSid();         }         return _nextSid != INVALID_SID_VALUE;     }   private void readToEndOfRecord(){   while(this._currentDataOffset<this._currentDataLength)       readByte(); }   }

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    GIS用百度行政区域的经纬度直接画
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    随机找出24个不一样的字,在把一
    java怎么实现html转为pdf
    lotus数据列表文档个数如何实时统
    lotus代理中LS如何将字符串保存到
    在lotus BS系统里怎样方便实现统
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    java怎么实现html转为pdf
    lotus数据列表文档个数如何实时统
    在lotus BS系统里怎样方便实现统
    undefined reference timer_crea
    linux文件/usr/lib破坏了,还原后
    linux上运行system函数时,print
    整合ssh后如何获取同一个ses
    通过IP获取局域网内手机的Ne
    Hibernate优缺点有哪些
    Hibernate工作原理是什么
    java解析xml,如何拿到Test节
    client.executeMethod(httpp
    The APR based Apache Tomca
    tabPanel嵌套内部panel 内部
    failed to lazily initializ
    SSH框架在页面表单中的数据上
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |