zoukankan      html  css  js  c++  java
  • ICSharpCode.SharpZipLib.Zip.ZipException: EOF in header

    //异常提示:ICSharpCode.SharpZipLib.Zip.ZipException: EOF in header 
    
    NPOIMemoryStream stream = new NPOIMemoryStream();
    using (var fileStream = File.Open(filePath, FileMode.Open, FileAccess.ReadWrite))
    {
        fileStream.CopyTo(stream);
        stream.Position = 0; //这一句不加就会上面的异常错误
    }
    IWorkbook wk = new NPOI.XSSF.UserModel.XSSFWorkbook(stream);

     还有种情况报这个错误,NPOI打开了空的流对象,这种情况NPOI不用传流对象创建IWorkbook对象,直接调用无参构造函数,最后操作完之后将结果写入到流中;最后提示一下:写入流之前也需要 stream.Position = 0;

    protected IWorkbook GetWorkbook(string ext)
    {
        IWorkbook book = null;
        if (ext.ToLower().Equals(".xls"))
        {
            book = new HSSFWorkbook();
        }
        else if (ext.ToLower().Equals(".xlsx"))
        {
            book = new NPOI.XSSF.UserModel.XSSFWorkbook();
        }
        else
        {
            throw new SinoException("只支持Excel文件");
        }
        return book;
    }

    打开Excel文件流的方式

    protected IWorkbook OpenWorkbook(Stream stream, string ext)
    {
        IWorkbook book = null;
        if (ext.ToLower().Equals(".xls"))
        {
            book = new HSSFWorkbook(stream);
        }
        else if (ext.ToLower().Equals(".xlsx"))
        {
            book = new NPOI.XSSF.UserModel.XSSFWorkbook(stream);
        }
        else
        {
            throw new SinoException("只支持Excel文件");
        }
        return book;
    }
      public class NPOIMemoryStream : MemoryStream
      {
            /// <summary>
            /// 获取流是否关闭
            /// </summary>
            public bool IsColse
            {
                get;
                private set;
            }
            public NPOIMemoryStream(bool colse = false)
            {
                IsColse = colse;
            }
            public override void Close()
            {
                if (IsColse)
                {
                    base.Close();
                }
            }
      }
  • 相关阅读:
    Android 走向MD的配色风格
    Android热点回顾第六期
    C#集合类:动态数组、队列、栈、哈希表、字典(转)
    Google Chrome默认字体设置(Win)
    C# Socket的粘包处理(转)
    设计模式原则总结--读《大话设计模式》有感 <转>
    C#设计模式学习笔记-单例模式(转)
    C# 编写Windows Service(windows服务程序)
    C# 获取农历日期
    C# 中怎么将string转换成int型
  • 原文地址:https://www.cnblogs.com/yiyanwei/p/14196664.html
Copyright © 2011-2022 走看看