Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET Excel file download on button click

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.

like image 994
Itskiddly Avatar asked Dec 05 '22 20:12

Itskiddly


1 Answers

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.");
}
like image 59
Shane Wealti Avatar answered Dec 12 '22 01:12

Shane Wealti