Frage

Wir Excel verwenden SpreatSheetML zu XLS in einem ASP.NET-Webservice zu konvertieren. Außerdem, wenn der Benutzer die richtigen Kontrollkästchen überprüft, laichen wir einen Thread, der Excel verwendet die Tabelle zu drucken.

Vor kurzem haben wir die App in einer neuen Umgebung eingesetzt, und dann begannen wir Probleme haben: das erste Mal, wenn jemand zu drucken versucht, scheint Excel auf dem Server zu hängen - also den Aufruf die PrintOut Methode auf der Arbeitsmappe nie zurückkehrt .

Wenn wir aber auf den Server als Anwendungspoolidentität anmelden und öffnen Sie Excel, etwas an den Drucker senden, und wieder schließen, Druck arbeitet von nun an!

Ich vermute, dass Excel eine invisible dialog zeigt - die Symptome sind die gleichen, wie wir früher hatten, eine Zeit, in Excel auf einem „verwenden, können nicht Object Linking and Embedding“ zum Stillstand kommen schien -Dialog, der auftrat, wenn Excel geöffnet

Ich weiß, dass serverseitige Büroautomation mit schlecht ist, aber das ist ein Vermächtnis app, die sehr schwer zu ändern, so bitte mich nicht nur raten unsere Lösung neu zu gestalten.

Hat jemand irgendwelche Erfahrungen mit dieser Art von Verhalten hat?

War es hilfreich?

Lösung

Nun, scheint niemand dieses Problem gehabt zu haben.

Die wirklich seltsame Sache ist, dass meine Nacht Jobs (gewöhnlicher .NET .exe) von Druck durchaus in der Lage sind - es ist nur mein Web-Service, die dieses Problem haben

.

So löste ich das Problem zu tun, was ich schon vor langer Zeit getan haben sollte: Ich habe einen einfachen Windows-Service mit dem

Andere Tipps

Ich habe kein Ende der Probleme (schlechte Leistung, hängen Prozesse, Absturz Prozesse usw.) hatte mit Microsoft Excel, Word und Powerpoint durch Interop in einem Web-Service-Office-Dokumente in das PDF-Format zu drucken. Ich habe zu Problemen konfrontiert, die ich vermute, weil unsichtbarer Dialogfelder sind (vielleicht eine Datei beschädigt ist, schreibgeschützt gesetzt empfohlen wurde, wird Datei kennwortgeschützt ist, oder was auch immer).

Ich weiß, es gibt Werkzeuge zur Verfügung, die Office nicht verwenden, aber sie sind sehr teuer. Meine Lösung war, die Automatisierung von Openoffice zu wechseln. Openoffice scheint viel stabiler zu sein, und ich habe links Prozesse hängen und dergleichen zu erreichen.

Also, während ich nehme an, ich sage „nicht automatisieren Microsoft Office“, Ich schlage nicht vor, dass Sie Automatisierung verlassen insgesamt; nur, dass ich habe viel mehr Erfolg als Openoffice Microsoft Office zu automatisieren.

SpreadsheetGear for .NET können xls lesen oder Arbeitsmappe xlsx und auf dem Standarddrucker drucken können beliebig ohne Anzeige Dialogfelder (siehe WorkbookView.Print () -Methode).

Sie können eine Auswertung herunterladen hier .

Disclaimer: Ich besitze SpreadsheetGear LLC

Wie viele Menschen, I Haben diese Art von Verhalten gesehen. Sie wird verursacht durch den Office-APIs in einem Server verwendet wird, insbesondere eine Multithreaded ASP.NET-Anwendung.

Allerdings haben Sie gesagt, Sie wollen sich in den Fuß nicht wissen nicht schießen, so dass es wenig mehr zu sagen. Sie scheinen von den Folgen früherer Dummheit gefangen werden.


OK, mich nicht mehr, wenn Sie gehört haben, das ein:

Ein Mann fragt eine Frage auf Stackoverflow. Er sagt: „SO, schlechte Dinge passieren, wenn ich aus dem Innern eines Service eine Office-Anwendung automatisieren“. Also, sagt John Saunders, „Also, automatisieren nicht die Office-Anwendung aus dem Inneren eines Service. Automatisieren Sie es aus dem Inneren einer Desktop-Anwendung, wie Microsoft getan werden soll.“

Wenn eine Anforderung etwas für kommt, die Excel erfordert, sollten Sie einen Prozess erstellen mit Windows Forms-Anwendung. Die Anwendung muss möglicherweise ohne Fenster starten, oder Sie können es im Zusammenhang mit einer Remote Desktop Verbindung. In jedem Fall wird die Aufgabe ausgeführt als Kommandozeilen-Parameter übergeben werden kann, oder das Programm kann einen WCF-Dienst Host Befehle an ihn gesendet hat.

Dieses Programm kann Excel nennen wie Excel aufgerufen werden erwartet. Es kann wahrscheinlich sogar mehr als einen Befehl zu Excel verarbeitet (einen nach dem anderen). Wenn es jedoch hängt, kann der Prozess getötet werden und ein anderer gestartet.

Ich habe nie versucht, diese, aber es klingt wie wäre es besser funktionieren, als zu versuchen, Office-Automatisierung zu tun, etwas, das es nicht ausgelegt zu tun.

zu bekommen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top