2011-01-14 8 views
2

Wir haben in Visual Studio 2005 eine Tonne Code in C# unter .NET 2.0 geerbt. Die Back-End-Datenbank ist MS SQL Server 2000. Wir haben den Code migriert zu C# unter .NET 4.0 in Visual Studio 2010 und kann kompilieren und erstellen. Das Problem besteht darin, dass der alte Code die Microsoft.Interop.Office.Word-Bibliothek verwendet hat, um serverseitige Berichte mithilfe von Seriendruck- und Makrovorlagen zu erstellen. Wir verstehen jetzt, dass Visual Studio 2010 serverseitige VBA- oder C# MS Word-Anwendungsfunktionen nicht unterstützt. Also haben wir Open XML 2.0 heruntergeladen. Die Dokumentation ist mehr als frustrierend. Und die unzähligen Posts, die wir im Web finden, sprechen für die Erstellung von Dokumenten von Grund auf, wenig über die Zusammenführung von Postsendungen oder das Ausführen von aktivierten Makros in .dotm-Dateien usw. und die meisten von ihnen befassen sich mit Open XML 1.0.Öffnen Sie eine Microsoft XML-Datei in Open XML 2.0 und fügen Sie variable Daten hinzu

Kann ich eine .dotx-Datei in eine .xml-Datei in MS Word konvertieren, dann einfach C# und die Open XML-API verwenden, um diese .xml-Datei zu laden und die aus der Datenbank gezogenen variablen Daten einzubetten? Es erscheint absolut verrückt, bei jeder Ausführung des Berichts eine EXISTIERENDE .xml-Datei (dh einen 30-seitigen Bericht) dynamisch im Code zu erstellen. Fehle ich etwas?

Wenn jemand dies erfolgreich getan hat, und Beispiel mit C# -Code wäre wirklich hilfreich. Danke, Emily

+0

Warum glauben Sie, dass MS Word-Anwendungen nicht unterstützt werden? –

+0

ton: in C# geschriebene Tonne Code in .NET 2.0 in Visual Basic 2005 –

+0

Das Problem ist, dass wir mit .NET 4.0 auf SQL 2008 R2 zu VS2010 migrieren möchten. Microsoft sagt, dass sie serverseitige Wordverwaltung nicht mehr über VBA oder C# unterstützen. Bangalore sagte mir, ich solle alles in Javascript umschreiben oder openXLM verwenden. Die Dokumentation zu openXML ist scheußlich. –

Antwort

2

Sie können eine wirklich sehr einfache Methode zum Suchen/Ersetzen versuchen.

  1. Erstellen Sie Ihre Vorlage als DOCX-Datei und speichern Sie sie auf dem Server
  2. Ändern Sie alle Ihre E-Mail-merge Felder mit einfachen Platzhalter zu finden und zu analysieren, die nicht angezeigt werden int er normalerweise dokumentieren und wird nicht erfordern XML-Codierung. Zum Beispiel: {{FirstName}}.
  3. Erstellen einer neuen leeren .docx (zip) für jedes Dokument, das Sie
  4. jede Datei lesen aus dem Inneren der Vorlage für
  5. generieren möchten Datei wie die Quelldatei zu lesen, suchen DOCX-Datei und ersetzen Sie Ihre Token als entsprechende
  6. Send-Datei Client

ich habe nicht mit WordML arbeitete ich, damit ich weiß nicht, ob es gotchas, dass die oben von der Arbeit, sondern basierte auf meinem Verständnis von Open XML und Nutzung verhindern von SpreadsheetML sollte es funktionieren.

Die Arbeit mit OpenXML ist komplizierter als Office Interop. Die Office Interop-API war der Office-Benutzeroberfläche viel näher und daher vertrauter und einfacher zu verwenden. Die Open XML-API ist ein sehr einfacher Wrapper für das Kern-XML und entspricht fast genau dem direkten Umgang mit XML. Es ist komplexer ohne die gleiche automatische Vertrautheit.

OpenXML ist jedoch viel besser als Office-Interop. Office Interop hat nie war sicher für den Server-Einsatz. Betrachten Sie dies als eine gute Zeit, um Ihre alte tickende Zeitbombe loszuwerden.

Verwandte Themen