zoukankan      html  css  js  c++  java
  • Npoi Web 项目中(XSSFWorkbook) 导出出现无法访问已关闭的流

    NPOI生产.xlsx文件件时,在使用book.Write(ms);后,会关闭流,这样导致再次使用Respons输出流的时候就出错了。

    造成关闭流的主要原因有时其实是跨域,同域是没有问题的。

    //新建类 重写Npoi流方法
    public class NpoiMemoryStream : MemoryStream
        {
            public NpoiMemoryStream()
            {
                AllowClose = true;
            }
     
            public bool AllowClose { get; set; }
     
            public override void Close()
            {
                if (AllowClose)
                    base.Close();
            }
    }
    //导出Excel文件的方法
    var ms = new NpoiMemoryStream();
    ms.AllowClose = false;
    workbook.Write(ms);
    ms.Flush();
    ms.Seek(0, SeekOrigin.Begin);
    ms.AllowClose = true;
     
    HttpContext curContext = HttpContext.Current;
    curContext.Response.ContentType = "application/vnd.ms-excel";
    curContext.Response.ContentEncoding = Encoding.UTF8;
    curContext.Response.Charset = "";
    curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8));
    long fileSize = ms.Length;
    curContext.Response.AddHeader("Content-Length", fileSize.ToString());
    curContext.Response.BinaryWrite(ms.GetBuffer());
    curContext.Response.End();

    原文:https://blog.csdn.net/eit520/article/details/53231642 

  • 相关阅读:
    ajax
    文件下载--getOutputStream输出二进制字符
    文件上传功能实现代码
    java动态生成验证码
    项目中用到的jar包简介(2)
    python字符串的常见操作
    python切片使用方法(超详细)
    for循环结合range使用方法
    python使用while循环实现九九乘法表
    石家庄云修科技有限公司
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/11074548.html
Copyright © 2011-2022 走看看