失败 - 下载EPPlus.dll生成的excel文件时出现网络错误

时间:2016-09-21 13:17:49

标签: c# asp.net excel epplus

我尝试从asp.net c#web表单应用程序下载EPPlus.dll生成的excel文件。但我得到失败 - 网络错误。 应该注意的是,提到的错误只发生在chrome中,并且可以在其他浏览器中成功完成作业。

顺便说一下,这个错误在我的localhost上没有出现,只在主服务器上发生。

如果有人可以解释这个问题的解决方案,那将非常有用。

http://www.irandnn.ir/blog/PostId/29/epplus

5 个答案:

答案 0 :(得分:16)

当我使用Response.Clear()和Response.Close()时,我遇到了同样的问题,并且必须避免它们查看我的代码,如下所示。

Response.Buffer = true;
Response.ContentType = mimeType;
Response.AddHeader("Content-Disposition", "attachment; filename=" + nameOfFile);
Response.BinaryWrite(bytes);
Response.End();

答案 1 :(得分:7)

试试这个:

using (ExcelPackage p = new ExcelPackage())
{
    //Code to fill Excel file with data.


    Byte[] bin = p.GetAsByteArray();

    Response.ClearHeaders();
    Response.ClearContent();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", Nombre_Del_Libro + ".xlsx"));
    Response.BinaryWrite(bin);
    Response.Flush();
    Response.End();
}   

答案 2 :(得分:1)

我不想使用response.End()因为抛出异常

using Word = Microsoft.Office.Interop.Word;
using  Microsoft.Office.Interop.Word;

答案 3 :(得分:0)

我有同样的问题,我用下面的代码解决了,请注意filename = \" Name.xlsx \":

中的引号
Response.Buffer = true;
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AppendHeader("content-disposition", "attachment; filename=\"Name.xlsx\"");
//Writeout the Content  
Response.BinaryWrite(bytes);

答案 4 :(得分:0)

我正在导出字符串变量HTML中的html表代码

遵循为我工作的代码

byte[] myFile = Encoding.ASCII.GetBytes(HTML);
        Response.Clear();
        Response.Buffer = true;
        Response.AddHeader("Content-Type", "application/excel");
        Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0};", "BAGrowthReport.xls"));
        Response.AddHeader("content-length", myFile.Length.ToString()); //Here is the additional header which is required for Chrome.
        Response.BinaryWrite(myFile);
        Response.Flush();
        Response.Close();