How to save created excel file to Client pc in ASP.NET

前端 未结 4 571
南旧
南旧 2021-01-25 06:26

I am creating a excel report and html report in asp.net when I clik the button and my application create it and save to the client desktop but, it is not working correctly becau

4条回答
  •  不知归路
    2021-01-25 06:43

    You need to send the file to client using Response object. To ignore the warning message like when client is opening the excel file -

    enter image description here

    To prevent this you need to mention the content type and length in the response use the sample code

    //Read the Excel file in a byte array. here pck is the Excelworkbook              
    Byte[] fileBytes = pck.GetAsByteArray();
    
    //Clear the response               
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.Cookies.Clear();
    //Add the header & other information      
    Response.Cache.SetCacheability(HttpCacheability.Private);
    Response.CacheControl = "private";
    Response.Charset = System.Text.UTF8Encoding.UTF8.WebName;
    Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;
    Response.AppendHeader("Content-Length", fileBytes.Length.ToString());
    Response.AppendHeader("Pragma", "cache");
    Response.AppendHeader("Expires", "60");
    Response.AppendHeader("Content-Disposition",
    "attachment; " +
    "filename=\"ExcelReport.xlsx\"; " +
    "size=" + fileBytes.Length.ToString() + "; " +
    "creation-date=" + DateTime.Now.ToString("R") + "; " +
    "modification-date=" + DateTime.Now.ToString("R") + "; " +
    "read-date=" + DateTime.Now.ToString("R"));
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    //Write it back to the client    
    Response.BinaryWrite(fileBytes);
    Response.End();
    

提交回复
热议问题