EPPLus不返回文件

时间:2017-05-10 20:29:32

标签: c# asp.net-mvc excel epplus

EPPLus未返回文件。构建或控制台错误没有错误。

网络标签显示已完成200 ok。

public ActionResult DownloadExcel(EntityReportModel erModel, string filename)
{
     var dataResponse = iEntityViewService.LoadEntityView(new EntityViewInput
     {
          SecurityContext = SessionCache.Instance.SecurityContext,
          EntityViewName = "Ticket",
          Parameters = new Dictionary<string, object> {
              {"MinTicketDateTime", "04/26/16"}

          }
     });

     var table = dataResponse.DataSet.Tables[0];

     filename = "NGLTICKETS";
     MemoryStream stream = new MemoryStream();
     using (ExcelPackage pack = new ExcelPackage())
     {
          ExcelWorksheet ws = pack.Workbook.Worksheets.Add(filename);
          ws.Cells["A1"].LoadFromDataTable(table, true);

          return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);

     }
}

1 个答案:

答案 0 :(得分:2)

您不会操纵输出流,因此您将无法获得结果。

您可以通过执行var stream = new MemoryStream(pack.GetAsByteArray())来填充您的信息流。作为替代pack.SaveAs(stream)

所以你的代码看起来应该是这样的:

 using (ExcelPackage pack = new ExcelPackage())
 {
      ExcelWorksheet ws = pack.Workbook.Worksheets.Add(filename);
      ws.Cells["A1"].LoadFromDataTable(table, true);

      var stream = new MemoryStream(pack.GetAsByteArray()); //Get updated stream
      return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename);    

      //or simple return File(excelPackage.GetAsByteArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", filename)
 }