2017-05-17 3 views
0

Ich versuche, eine XLS-Datei auf dem IIS-Server zu öffnen und zu aktualisieren und sie dem Benutzer als Download zu senden. Der folgende Code funktioniert einwandfrei in der Entwicklungs-Expressumgebung von IIS. Aber wenn ich es auf IIS-Server bereitstellen, scheint Server auf Workbooks.open-Funktion zu hängen.IIS öffnet XLS nicht

// Copy template to the given file 
      System.IO.File.Copy(Server.MapPath("~") + "\\App_Data\\template.xls", file, true); 

      // Get current project id 
      int activeProjectID = Convert.ToInt32(Session["activeProjectID"]); 

      // Open workbook 
      oXL = new Microsoft.Office.Interop.Excel.Application(); 
      oXL.Visible = true; 
      oXL.DisplayAlerts = false; 
      mWorkBook = oXL.Workbooks.Open(file, 0, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); 

      //Get all the sheets in the workbook 
      mWorkSheets = mWorkBook.Worksheets; 

Antwort

1

Serverseitige Automatisierung mit Office Interop-Bibliotheken ist kein unterstütztes Szenario und verlangt nach Problemen. Es hat eine Menge Probleme verursacht, weil:

  1. eine Benutzeridentität benötigt
  2. Sie mit dem Desktop
  3. Sie haben nicht reentrancy und Skalierbarkeit interagieren

„Microsoft derzeit nicht empfehlen und unterstützt keine Automatisierung von Microsoft Office-Anwendungen aus einer unbeaufsichtigten, nicht interaktiven Clientanwendung oder -komponente (einschließlich ASP-, ASP.NET-, DCOM- und NT-Dienste), da Office bei Office möglicherweise instabiles Verhalten und/oder Deadlock aufweist Lauf in dieser Umgebung. "

https://support.microsoft.com/en-us/help/257757/considerations-for-server-side-automation-of-office

+0

Dank Oscar, Was sind dann andere Alternativen? Ich muss eine Excel-Datei mit Makro aus der Datenbank erstellen. – Tom

+0

@Tom Verwenden Sie das XML-Format von Office 2003 oder Open XML oder Bibliotheken von Drittanbietern wie Aspose Cells, wenn Sie unbedingt das alte xls-Binärformat https://www.aspose.com/products/cells/net verwenden müssen – Oscar