ASP.NET Excel file download on button click

79,717
FileInfo file = new FileInfo(PathToExcelFile);
if (file.Exists)
{
   Response.Clear();
   Response.ClearHeaders();
   Response.ClearContent();
   Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
   Response.AddHeader("Content-Type", "application/Excel");
   Response.ContentType = "application/vnd.xls";
   Response.AddHeader("Content-Length", file.Length.ToString());
   Response.WriteFile(file.FullName);
   Response.End();
}
else
{
   Response.Write("This file does not exist.");
}
Share:
79,717
Itskiddly
Author by

Itskiddly

Updated on August 30, 2020

Comments

  • Itskiddly
    Itskiddly over 3 years

    To preface, all of this occurs on a local intranet, which does not at any point need to connect to the internet.

    I have a database on which I run a query, after which the user presses a "Download Spreadsheet" button which creates/sends the spreadsheet. The creation of the spreadsheet works fine, but after many attempts I cannot get the file to download. Here's what I've tried:

    • Modifying the Response/Header objects
      • TransmitFile
      • WriteFile
      • BinaryStream
      • Redirect
    • Javascript Redirect
      • Response.Write(javascript code)

    In most cases, the result is that the excel file is created, but no redirect/download occurs. In the case of Response.Redirect(), if it's a website it works great, but if it's a redirect to a file:///, then it throws a thread exception but no more detail.

    I suspect it has to do with the lifecycle of an ASP.NET document, but I'm afraid I am not experienced enough with ASP.NET to be able to know for sure.