java.io.IOException: Invalid header signature; read 7011577315731788834, expecte
d -2226271756974174256
        at org.apache.poi.poifs.storage.HeaderBlockReader.<init>(HeaderBlockRead
er.java:100)
        at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSyste
m.java:84)
        at yuebao.CallRecord.main(CallRecord.java:18)

解决方案 »

  1.   

    附上一点程序package yuebao;import java.io.*;
    import java.text.*;import org.apache.poi.hssf.usermodel.*;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;public class CallRecord
    {
    public static void main(String[] args)
    {
    int b=0;
    POIFSFileSystem pfs=null;
    HSSFWorkbook hwb=null;
    try
    {
    pfs=new POIFSFileSystem(new FileInputStream("CallRecord(Running).xls"));
    hwb=new HSSFWorkbook(pfs);
    HSSFSheet sheet=hwb.getSheetAt(0);
    int rowNum;
    int i;
    }
    catch (FileNotFoundException e)
    {
    e.printStackTrace();
    }
    catch(IOException e)
    {
    e.printStackTrace();
    }
    }
    }
      

  2.   

    lz发这些,只能说明错误是:不合法的头名称
    其他的期待高人来yy
      

  3.   

    不好意思 我回的时候还没看到程序。
    应该是CallRecord(Running).xls有问题吧
    lz试下直接打开可以么
      

  4.   

    在public POIFSFileSystem(InputStream inputstream){}内部
    HeaderBlockReader headerblockreader = new HeaderBlockReader(inputstream);
    HeaderBlockReader里面把流按byte[512]来读,
    读完longfield.get()转换了下 然后出来异常信息了
    以上属于废话 没有找到原因建议lz随便新建一个excel文件 读一下看看报错不
    我还是怀疑是文件问题
      

  5.   

    的确是文件问题,因为我新建了一个文件后,再把原来的内容全部复制过去,然后读取新建的文件,运行后正常
    但还是不明白到底是什么原因,因为我把原来内容用ctrl+A全选后复制到另一个excel空文档里,保存后新建的文档的大小是200多K,而原来那个文件却只有90多K,都是相同的内容,行数也一样,我也没做什么改动,麻烦大家给分析分析
      

  6.   

    你的程序可能在别的地方有对excel文件的操作,也许程序有问题导致文件的部分数据损坏。
      

  7.   

    但是数据还是完整的啊,没有缺
    这个excel文件是由另一个文件产生的,不过那个不是我做的,我只是提取了文件
      

  8.   

    不是说excel文件里保存的数据丢失。
    是excel文件本身损坏了。
    既然新建的文件能用就好,没必要在一个损坏的文件上纠缠了。