2009-08-12 2 views
3

Ich habe diese Webanwendung in C# .net läuft auf einem externen Webserver.In dem ich versuche zu generieren und speichern Sie das Wort doc auf dem Server (ohne es zu öffnen). Es läuft Geldstrafen auf meinem lokalen Computer, da ich Word auf meinem Computer installiert habe, aber auf dem Server zeigt es einen Fehler bei der Verwendung der MyApplication-Klasse. Ich verstehe, dass es nicht möglich ist, Word auf dem Server zu installieren. Im Moment referenziere ich Word.interopp Assembly in meiner Anwendung. Gibt es einen besseren Weg, um das Problem zu lösen.Erstellen und Speichern von Word-Dokument auf Server

Danke und Grüße

Vickey Y.

+3

Ist OpenXML eine Option für Sie? Dann sollten Sie sich das OpenXML-SDK zum Erstellen von Dokumenten ansehen. –

Antwort

2

die word.interop verwendet eine Instanz des Wortes um die Dokumente zu erzeugen und zu speichern. Obwohl es die Benutzeroberfläche nicht anzeigt, wird der Prozess von WINWORD ausgeführt. Kurz gesagt, Sie benötigen ein Wort, das auf dem Server installiert ist, um word.interop zu verwenden. Als wir dies taten, stießen wir auch auf Probleme, als die Server mit Word 2007-Dokumenten kompatibel sein mussten. Daher ist es nicht einfach, mit Word zu arbeiten. Hoffe, du kommst durch das Problem ok :)

3

Wenn Sie versuchen, Office Interop ohne Installation von Office auf dem Server zu verwenden, dann wird es eindeutig fehlschlagen.

Könnten Sie Word auf einem verschiedenen Server installieren und eine Art von Web-Service aussetzen das Dokument für Sie zu erstellen und den Inhalt der Datei wieder auf den ursprünglichen Server dienen zu retten?

Sie können möglicherweise einige Bibliotheken von Drittanbietern verwenden, die das entsprechende Word-Format generieren können, aber ich kenne keine.

Welches Format muss es sein? Ist es ein kompliziertes Dokument? Könnten Sie einfach RTF verwenden?

3

Wir verwenden ein Drittanbieter-Tool namens Aspose.Word. Auf diese Weise können Sie eine ganze Reihe von Word-Inhalten ausführen, ohne Word selbst auf dem Server installieren zu müssen.

1

Ja, Sie können Word auf dem Server ausführen lassen. Beachten Sie jedoch, dass winword.exe als ASPNET-Benutzer ausgelöst wird, wenn der Prozess winword.exe vom Webdienst geöffnet wird. Einige Versionen von MS Word zeigten während des ersten Laufs modale Anpassungsmodalitäten, wodurch es unmöglich wurde, den Prozess der Verwendung von Word in der Serverumgebung zu automatisieren. Die Lösung machte ASPNET zu einem "Login-fähigen" Benutzer, der sich als ASPNET-Benutzer beim Server anmeldete, Word manuell ausführte, alle Modal-Formulare der Erstkonfiguration schloss und dann den ASPNET-Benutzer in den Normalzustand setzte. Da diese Konfigurationsfenster nur während der ersten Ausführung von winword auftraten (genauer: bis die Konfiguration vom Benutzer genehmigt wurde), funktionierte das tatsächlich.

Hinweis: Die Verwendung von Winword auf dem Server erfordert einige rechtliche Untersuchungen. Soweit ich weiß, ist die Einstellung der MS zu solchen Lösungen eher negativ, während einige Rechtssysteme es völlig in Ordnung finden. Berücksichtigen Sie auch die Notwendigkeit, WinWord-Prozesse zu verwalten, und ... und das ist ein bisschen grober Hack.

2

Ich denke, dass Sie so etwas tun können. Ich sollte Ihnen erlauben, ein Dokument vom Server zu öffnen.

protected void btnCreateWordBulletin_Click(object sender, EventArgs e) 
{ 
String a= Server.MapPath("/Solution/Templates/Sport/Sport.doc"); 
String b= Server.MapPath("/Solution/Templates/Sport/SportSave.doc"); 
CreateWordDocument(a, b); 
} 

protected void CreateWordDocument(object fileName, object saveAs) 
{ 
    //Set Missing Value parameter - used to represent 
    //a missing value when calling methods through interop 
    object missing = System.Reflection.Missing.Value; 
//Setup the Word.App class 
Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); 
Microsoft.Office.Interop.Word.Document aDoc = null; 
// Check to see that file exists 
if (System.IO.File.Exists((string)fileName)) 
{... Activating doc etc...}} 
0

Office ist eine weitere mögliche Lösung für Sie, wenn Sie einen echten DOC und DOCX müssen (im Gegensatz zu RTF oder ein anderes Format im Gegensatz):

http://www.officewriter.com

Verwandte Themen