.Net Core Download MemoryStream files

Viewed 18

On my webiste, I want user to be able to download Excel file. So, It works if I create an Excel xlsx file physically on the disk But it doesn't work if I use MemoryStream rather than creating on disk.

WORKING CODE

 public IActionResult DownloadExcelDoc()
 {
    using (var WorkBook = new XLWorkbook())
    {
           IXLWorksheet Ws = WorkBook.Worksheets.Add();
           Ws.Name = "Product List";
           Ws.Style.Font.FontName = "Arial Narrow";
           Ws.Cell(1, 1).Value = "Hello World";
           WorkBook.SaveAs("ListOfReport.xlsx");       
    }

    FileInfo fileInfo = new FileInfo("ListOfReport.xlsx");
    if (fileInfo.Exists)
    {
        var net = new System.Net.WebClient();
        var data = net.DownloadData(FileName);
        var content = new System.IO.MemoryStream(data);
        var contentType = "APPLICATION/octet-stream";
        var fileName = Path.GetFileName(FileName);
        return File(content, contentType, fileName);            
    }
}

NOT WORKING

 public IActionResult DownloadExcelDoc()
 {

   using (var WorkBook = new XLWorkbook())
   {
          IXLWorksheet Ws = WorkBook.Worksheets.Add();
          Ws.Name = "Product List";
          Ws.Style.Font.FontName = "Arial Narrow";
          Ws.Cell(1, 1).Value = "Hello World";
          var stream = new MemoryStream();
          WorkBook.SaveAs(stream);       
   }


   var FileName = "ListOfReport.xlsx"; 
   var content = stream;
   var contentType = "APPLICATION/octet-stream";
   return File(content, contentType, FileName);
}

NOT Working => I mean the browser says "Waiting for localhost..." and doesn't download the file.

0 Answers
Related