2016-08-26 3 views
2

У меня есть приложение, которое работает на двух серверах, другое - QA, а другое - Production. Проблема заключается в том, что если вы хотите открыть приложение Excel, которое оно загружает в приложении QA или PRD, он открывает Excel, но ничего не происходит, просто пустое.Экспорт в excel не работает на сервере

Был момент, когда приложение может экспортировать информацию в файл Excel, не больше, так как вчера метод выглядит следующим образом:

[Autorizacion] 
public ActionResult ExportToExcelReports() 
{ 
    IList<DTOReport> reports = null; 

    try 
    { 
     reports = BusinessLogic.Report.GetReports(SessionHelper.Site.IdSite); 

     var title = "Reports"; 

     var report = new System.Data.DataTable(title); 

     report.Columns.Add("Blah1", typeof(string)); 
     report.Columns.Add("Blah2", typeof(string)); 
     report.Columns.Add("Blah3", typeof(string)); 
     report.Columns.Add("Blah4", typeof(string)); 
     report.Columns.Add("Blah5", typeof(string)); 
     report.Columns.Add("Blah6", typeof(string)); 
     report.Columns.Add("Blah7", typeof(string)); 
     report.Columns.Add("Blah8", typeof(string)); 
     report.Columns.Add("Blah9", typeof(string)); 
     report.Columns.Add("Blah10", typeof(string)); 

     foreach (var item in reports) 
     { 
      var brandText = ""; 

      foreach (var brand in item.Brands) 
      { 
       brandText = brandText + (brandText != "" ? "," : "") + brand.Name; 
      } 

      report.Rows.Add(item.Name, item.Description, item.DateCreated, item.Type, item.Category, item.Latitude, item.Longitude, item.Locality, item.Province, brandText); 
     } 

     var grid = new GridView(); 
     grid.DataSource = report; 
     grid.DataBind(); 

     Response.ClearContent(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment; filename=" + title + ".xls"); 
     Response.ContentType = "application/ms-excel"; 

     Response.Charset = string.Empty; 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter htw = new HtmlTextWriter(sw); 

     grid.RenderControl(htw); 

     Response.Output.Write(sw.ToString()); 
     Response.Flush(); 
     Response.End();  
    } 
    catch (Exception ex) 
    { 
     LogError(ex); 
    } 

    return View("Index", reports); 
} 

Дело в том, это работает на моей локальной машине, Я открываю проект, я его компилирую, я запускаю его, и он работает с одинаковой информацией или данными из Production, то же самое происходит с QA, потому что они используют одну и ту же серверную базу данных.

GetReports работает отлично, он не входит в try catch, он просто работает в моей среде разработки. Возможно, что-то связанное с excel на серверах?

Может быть, это связано с IIS или серверами, на которых развертывается приложение ?.

+1

Есть ли код ошибки, когда он не возвращает excel? – juanvan

+0

Извините, я поместил эту информацию жирным шрифтом, забыл поставить то, что происходит при загрузке файла в excel. – user3442470

+0

, поскольку вы по существу экспортируете HTML в этот файл (который можно прочитать в excel), можете ли вы открыть файл в текстовом редакторе и посмотреть, есть ли в нем какой-либо контент? Возможно, он каким-то образом поврежден – ADyson

ответ

0

Хорошо у меня есть нашел свой ответ в этой ссылке: Opening excel files from the internet opens a blank excel window

проблема возникла, когда Windows, установившие это обновление: обновления Windows KB3115130 (Excel 2010) - https://www.microsoft.com/en-us/download/details.aspx?id=52809

«В Microsoft Excel 2010 32-разрядная версия существует уязвимость системы безопасности, позволяющая запускать произвольный код при открытии вредоносного файла. Это обновление устраняет уязвимость «

Раствор либо (не рекомендуется) удалить это обновление или:. Перейти в свойства файла (R клик - свойства) Нажмите„Разблокировать“ Нажмите кнопку„Применить“ (Ответил Josh Bucklen)

0

http://www.computerhope.com/issues/ch001123.htm

Вы можете попробовать ссылку выше. Поскольку он работал, возможно, настройки Excel были изменены. По существу в ссылке есть три вещи, чтобы попробовать:

  1. Снимите флажок «Игнорировать DDE» опцию в Excel, так что внешние приложения , которые называют его не игнорируются.
  2. Проверка ассоциации файлов для расширений для различных типов файлов Excel (.xls, .xlsx, XLSM и т.д.)
  3. Repair Office Excel в случае, если он не функционирует должным образом
+2

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. – ekad

+0

хорошая точка .. я отредактировал, спасибо! – elsausmc

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