Reporting per Word

    • C#

      Reporting per Word

      Ich musste vor kurzem ermitteln, wie man Word Reports im Zusammenhang mit dem XML Data Mapping und Content Controls unter .NET verwenden kann. Das Resultat ist ein kleines Spielprojekt, mit dem ein leeres Word-Template erzeugt, dieses Template in eine DB importiert und anschließend als ein "Report" mit Daten aus einer Datenbank ausgegeben werden kann. Die Pfade sind hardcodiert und sollten ggf. vorher angepasst werden. Der Code soll nur als Einstiegshilfe in die Materie dienen.
      Das Projekt verwendet die Nugetpakete Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.Sqlite und DocumentFormat.OpenXml

      Eine SQLite-Datenbank wird bei Programmstart unter %APPDATA%\wordxmlmapsample.db mit zwei Tabellen (Customers, WordTemplates) angelegt. In die Customers-Tabelle wird ein Eintrag zum Test für das Tempalte erzeugt.

      Funktionsweise

      Der Button "Create Empty Customer Tempalte" erzeugt unter C:\Temp\Customer_Template.docx ein leeres Word-Template. Dieses öffnet man anschließend und geht in den "Entwickler"-Reiter (muss ggf. eingeblendet werden). Anschließend den XML Zuordnungsberech öffnen und auf der rechten Seite den Namespace "http://tempuri.org" auswählen. Hier können die verfügbaren Felder dem Worddokument hinzugefügt werden.

      Wenn man das Dokument soweit gefüllt hat speichert man dieses einfach und klickt in der Form des Programms auf "Import Template". Die Word-Datei wird in einem BLOB-Feld in der Datenbank gespeichert. Über "Apply Tempalte" kann eine Word-Datei erzeugt werden, die das Template aus der Datenbank hernimmt und die Felder mit Daten aus der Customers-Tabelle befüllt.


      Achtung: Das Programm ist nur eine Machbarkeitsstudie und ist nicht gegen "Fehlbedienung" abgesichert. Es soll nur als Einstiegshilfe dienen.
      Happy Coding :)
      Dateien