Word aus Vorlage in C# generieren

Die automatisierte Generierung von Word Dokumenten wird von Unternehmen häufig zur Erstellung einer Vielzahl von Berichten verwendet. In einigen Fällen werden die Dokumente von Grund auf neu erstellt. Andererseits werden vordefinierte Vorlagen verwendet, um Word Dokumente zu generieren, indem die Platzhalter ausgefüllt werden. In diesem Artikel zeige ich, wie Sie Word Dokumente aus Vorlagen dynamisch und programmgesteuert in C# generieren. Sie erfahren, wie Sie die Word-Vorlagen aus verschiedenen Arten von Datenquellen füllen.

Die folgenden Szenarien werden zusammen mit den Codebeispielen in diesem Artikel behandelt:

C# Word Automatisierungs-API

Wir verwenden Aspose.Words for .NET – eine Word Automatisierungs-API, mit der Sie Word Dokumente von Grund auf neu oder durch Ausfüllen der vordefinierten Word-Vorlagen erstellen können. Sie können die Binärdateien der API entweder herunterladen oder mit einer der folgenden Methoden installieren.

Verwenden des NuGet Paket Managers

Verwenden der Paket-Manager Konsole

PM> Install-Package Aspose.Words

Generieren Sie ein Word Dokument aus einer Vorlage mit C# objekten

Lassen Sie uns zunächst sehen, wie Sie die Word-Vorlage mit den C# objekten füllen. Dazu erstellen wir ein Word Dokument (DOC/DOCX) mit folgenden Platzhaltern als Inhalt des Dokuments:

<<[sender.Name]>> says: "<<[sender.Message]>>."

Hier ist der Absender das Objekt der folgenden Klasse, die wir verwenden, um die Vorlage zu füllen.

public class Sender
{
	public string Name { get; set; }
	public string Message { get; set; }

	public Sender (string _name, string _message)
	{
		Name = _name;
		Message = _message;
	}
}

Jetzt verwenden wir das Berichtsmodul von Aspose.Words, um das Word Dokument aus der Vorlage und dem Objekt der Sender Klasse zu generieren, indem wir die folgenden Schritte ausführen.

  • Erstellen Sie ein Objekt der Klasse Document und initialisieren Sie es mit dem Pfad der Word-Vorlage.
  • Erstellen und initialisieren Sie ein Objekt der Sender Klasse.
  • Instanziieren Sie die Klasse ReportingEngine.
  • Füllen Sie die Vorlagen mithilfe von ReportingEngine.BuildReport() aus, das das Objekt des Dokuments, die Datenquelle und den Namen der Datenquelle als Parameter verwendet.
  • Speichern Sie das generierte Word Dokument mit der methode Document.Save().

Das folgende Codebeispiel zeigt, wie Sie ein Word Dokument aus einer Vorlage in C# generieren.

Document doc = new Document("template.docx");
Sender sender = new Sender("LINQ Reporting Engine", "Hello World");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, sender, "sender");
doc.Save("word.docx");

Ausgabe

Generieren Sie ein Word Dokument aus einer XML Daten quelle in C#

Um das Word Dokument aus einer XML Daten quelle zu generieren, verwenden wir eine etwas komplexere Word-Vorlage mit den folgenden Platzhaltern:

<<foreach [in persons]>>Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth: <<[Birth]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.Average(p => p.Age)]>>

Die XML Daten quelle, die ich in diesem Beispiel verwendet habe, ist unten angegeben.

<Persons>
   <Person>
       <Name>John Doe</Name>
       <Age>30</Age>
       <Birth>1989-04-01 4:00:00 pm</Birth>
   </Person>
   <Person>
       <Name>Jane Doe</Name>
       <Age>27</Age>
       <Birth>1992-01-31 07:00:00 am</Birth>
   </Person>
   <Person>
       <Name>John Smith</Name>
       <Age>51</Age>
       <Birth>1968-03-08 1:00:00 pm</Birth>
   </Person>
</Persons>

Im Folgenden sind die Schritte zum Generieren eines Word Dokuments aus einer XML Daten quelle aufgeführt:

  • Erstellen Sie eine Instanz der Document Klasse und initialisieren Sie sie mit dem Pfad der Word-Vorlage.
  • Erstellen Sie eine Instanz der Klasse XmlDataSource und initialisieren Sie sie mit dem Pfad der XML Datei.
  • Instanziieren Sie die ReportingEngine Klasse.
  • Verwenden Sie die Methode ReportingEngine.BuildReport() auf die gleiche Weise wie zuvor, um die Word-Vorlage zu füllen.
  • Speichern Sie das generierte Word Dokument mit der methode Document.Save().

Das folgende Codebeispiel zeigt, wie Sie ein Word Dokument aus einer XML Daten quelle in C# generieren.

Document doc = new Document("template.docx");
XmlDataSource dataSource = new XmlDataSource("datasource.xml");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "persons");
doc.Save("word.docx");

Ausgabe

Generieren Sie ein Word Dokument aus einer JSON Daten quelle in C#

Sehen wir uns nun an, wie Sie ein Word Dokument mit einer JSON Daten quelle generieren. In diesem Beispiel generieren wir eine Liste der Kunden, die nach ihren Managern gruppiert sind. Das wäre in diesem Fall die Word-Vorlage:

<<foreach [in managers]>>Manager: <<[Name]>>
Contracts:
<<foreach [in Contract]>>- <<[Client.Name]>> ($<<[Price]>>)
<</foreach>>
<</foreach>>

Das Folgende wäre die JSON Daten quelle, die wir verwenden, um die Vorlage zu füllen:

[
   {
       Name: "John Smith",
       Contract:
       [
           {
               Client:
               {
                   Name: "A Company"
               },
               Price: 1200000
           },
           {
               Client:
               {
                   Name: "B Ltd."
               },
               Price: 750000
           },
           {
               Client:
               {
                   Name: "C & D"
               },
               Price: 350000
           }
       ]
   },
   {
       Name: "Tony Anderson",
       Contract:
       [
           {
               Client:
               {
                   Name: "E Corp."
               },
               Price: 650000
           },
           {
               Client:
               {
                   Name: "F & Partners"
               },
               Price: 550000
           }
       ]
   },
]

Zum Generieren des Word Dokuments aus JSON verwenden wir die Klasse JsonDataSource zum Laden und Verwenden der JSON Daten quelle, und die restlichen Schritte bleiben gleich. Das folgende Codebeispiel zeigt, wie Sie mithilfe von JSON in C# ein Word Dokument aus der Vorlage generieren.

Document doc = new Document("template.docx");
JsonDataSource dataSource = new JsonDataSource("datasource.json");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "managers");
doc.Save("word.docx");

Ausgabe

Generieren Sie ein Word Dokument aus einer CSV Daten quelle in C#

Zum Generieren des Word Dokuments aus CSV verwenden wir die folgende Word-Vorlage:

<<foreach [in persons]>>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">>
<</foreach>>
Average age: <<[persons.Average(p => p.Column2)]>>

Die Vorlage wird mit den folgenden CSV Daten gefüllt:

John Doe,30,1989-04-01 4:00:00 pm
Jane Doe,27,1992-01-31 07:00:00 am
John Smith,51,1968-03-08 1:00:00 pm

Kommen wir nun zum C# Code. Alle Schritte bleiben auch hier gleich, mit Ausnahme der einen Änderung, dass wir die Klasse CsvDataSource verwenden, um die CSV Daten zu laden. Das folgende Codebeispiel zeigt, wie das Word Dokument aus einer CSV Daten quelle generiert wird.

Document doc = new Document("template.docx");
CsvDataSource dataSource = new CsvDataSource("datasource.csv");
ReportingEngine engine = new ReportingEngine();
engine.BuildReport(doc, dataSource, "persons");
doc.Save("word.docx");

Ausgabe

Probieren Sie Aspose.Words for .NET kostenlos aus

Sie können Aspose.Words for .NET mit einer kostenlosen temporären Lizenz ausprobieren.

Fazit

In diesem Artikel haben Sie gelernt, wie Sie Word Dokumente aus Vorlagen mit C# generieren. Außerdem haben Sie gesehen, wie Sie Objekte, XML, JSON und CSV Daten quellen verwenden, um Word Dokumente zu generieren. Weitere Informationen zur C# Word Automatisierungs-API finden Sie unter Dokumentation. Außerdem können Sie uns über unser Forum kontaktieren.

Siehe auch