2017-04-20 3 views
0

Ich habe eine Aufgabe, wo ich einen Seriendruck in Word (2016) durchführen müssen. Ich muss einen normalen Seriendruck durchführen, aber ich muss einige benutzerdefinierte E-Mails senden, ohne Outlook zu verwenden. Ich würde gerne den integrierten Seriendruck-Assistenten verwenden, da er unseren Benutzern bekannt ist, aber ich kann keine Möglichkeit finden, den Assistenten aufzurufen. Ich habe eine ShowWizard Methode für VBA gefunden, aber nichts für C#. Ist der Seriendruck-Assistent mit VSTO C# verfügbar? Gibt es einen besseren Weg, um das Ziel zu erreichen?Word Mail Merge Wizard in C#

Antwort

0

Zuerst würde ich Ihnen raten, entweder VBA oder Interop-Bibliotheken zu verwenden. Beide können nur auf einem Computer ausgeführt werden, auf dem MS Office installiert ist. Bei VBA-Anwendungen können Probleme auftreten, wenn Benutzer mit verschiedenen Office-Versionen diese ausführen und wenn Sie neue Updates erhalten. Es ist auch bekannt, dass Interop Probleme in Serverszenarien hat.

Für die Zusammenführung von E-Mails ist es wahrscheinlich sinnvoll, eine aus den OpenXML-basierten Toolkits von Drittanbietern auszuwählen, damit sie ohne MS Office (Think-Server-Szenarien) ausgeführt werden können. Sie benötigen MS Word Vorlagen Dokumente mit Platzhaltern für Daten. Dann können Sie C# verwenden, um die Daten für die Berichte zu laden und die Daten mit Vorlagen zusammenzuführen, um endgültige Dokumente (docx, pdf, xps oder Bildformate) zu erhalten. Hier ist der Code durch ein solches Toolkit verwendet benötigt, um Daten aus der Datenbank mit der Vorlage Zusammenführung ein PDF-Dokument zu erhalten:

IEnumerable<Customer> customers = DataAccess.GetCustomerById(15); 
DocumentGenerator dg = new DocumentGenerator(customers); 
DocumentGenerationResult result = dg.GenerateDocument("MyTemplate.docx", "MyReport.pdf"); 

Auf dieser link können Sie weitere Informationen und Beispiele finden.

Bisher haben Sie eine Möglichkeit, Serienbrief-Dokumente zu generieren. Nun zu deinem zweiten Problem, das diese Dokumente verschickt.

Ich nehme an, dass Ihr E-Mail-Server auf MS Exchange basiert. Neuere Versionen von MS Exchange Server stellen Webdienste bereit, die von einem Client aus verwendet werden können, ohne dass Outlook installiert sein muss.

Es gibt einige Schritt-für-Schritt-Anleitungen wie https://msdn.microsoft.com/en-us/library/office/dn567668(v=exchg.150).aspx, die Ihnen den Einstieg erleichtern. Sie werden in der Lage sein, die Anwendung zu schreiben, die die vollständige Kontrolle über alle Aspekte des Sendens von Nachrichten hat. Ich habe eine einfache Mail-Sende-Bibliothek für unser Unternehmen erstellt. Es hat einige Zeit gedauert, bis ich herausgefunden hatte, was es ist, aber jetzt ist es eine Art, es zu vergessen und zu vergessen. Es läuft reibungslos und ohne Probleme.

+0

Dank @jura für mich in die richtige Richtung zeigen. Gibt es kostenlose openxml Toolkits, die du empfehlen würdest? Ich werde mir das OpenXML-SDK von Nuget ansehen. Es sieht so aus, als ob es einige Werkzeuge für die Konvertierung von DOCX nach HTML hat und Daten von XLSX, die beide benötigt werden, zieht. – mack

+0

OpenXML SDK ist sinnvoll, wenn Sie einfache Dokumentmanipulationen durchführen müssen. Ich musste komplexe Dokumentverschmelzungen mit komplexen Vorlagen lösen. Ich hatte nur sehr begrenzte Zeit, um das zu erreichen, also habe ich eine Bibliothek von Dritten benutzt. –