2016-03-11 5 views
0

Мне нужно указать параметр загрузки в MVC для того, чтобы я вернул одну функцию, которая генерирует excel и загружается локально, но после развертывания на сервере его перенаправления, но генерирует файл excel.Загрузить в excel с помощью MVC не работает на сервере

Мои коды

Просмотров

<a href="/Report/StockOnHandToExcel" style="font-weight: bold" >Export To Excel</a> 

Контроллер

public void StockOnHandToExcel() 
    { 
     try 
     { 
      var dt = DataTableClass.ToDataTable(_report.StockOnHandExcelList()); 
      var stream = ExcelUtility.GetExcel(dt); 

      var filename = "StockOnHand.xlsx"; 
      var contenttype = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
      Response.Clear(); 
      Response.ContentType = contenttype; 
      Response.AddHeader("content-disposition", "attachment;filename=" + filename); 
      Response.Cache.SetCacheability(HttpCacheability.NoCache); 
      Response.BinaryWrite(stream.ToArray()); 
      Response.End(); 
     } 
     catch (Exception ex) 
     { 
      ErrorHandlerClass.LogMessage(ex.Message + ex.StackTrace); 
     } 
    } 

Заранее спасибо

+0

Непонятно, в чем проблема. –

+0

Когда пользователь щелкает тег, excel генерируется и загружается, работая нормально на локальном хосте, но когда я развернулся на сервере, excel не загружается. Я не знаю, в чем проблема. –

+0

Пробовал ли вы использовать браузер? Инструменты разработчика или что-то вроде Fiddler to контролировать ответ? Если произошла ошибка, это должно быть в ваших журналах приложений (при условии, что вы выполняете вашу ошибкуHandlerClass) –

ответ

1
public FileResult StockOnHandToExcel() 
     { 
      try 
      { 
       var dt = DataTableClass.ToDataTable(_report.StockOnHandExcelList()); 
       var stream = ExcelUtility.GetExcel(dt); 
       int length = (int)stream.Length; 
       byte[] data = new byte[length]; 
       stream.Position = 0; 
       stream.Read(data, 0, length); 
       var fileStream = new MemoryStream(data); 
       return File(fileStream, "application/ms-excel", "StockOnHand.xls"); 
      } 
      catch (Exception ex) 
      { 
       ErrorHandlerClass.LogMessage(ex.Message + ex.StackTrace); 
      } 
     } 

// это может быть работа!

Смежные вопросы