Wygeneruj Worda z szablonu w C#

Zautomatyzowane generowanie dokumentów Word jest szeroko stosowane przez przedsiębiorstwa do tworzenia wielu raportów. W niektórych przypadkach dokumenty są tworzone od podstaw. Z drugiej strony predefiniowane szablony służą do generowania dokumentów programu Word poprzez wypełnianie symboli zastępczych. W tym artykule pokażę, jak dynamicznie i programowo generować dokumenty programu Word z szablonów w języku C#. Dowiesz się, jak wypełniać szablony Word z różnych typów źródeł danych.

W tym artykule zostaną omówione następujące scenariusze wraz z przykładami kodu:

C# API automatyzacji Worda

Użyjemy Aspose.Words for .NET — interfejsu API automatyzacji programu Word, który umożliwia generowanie dokumentu programu Word od podstaw lub poprzez wypełnienie predefiniowanych szablonów programu Word. Możesz pobrać pliki binarne interfejsu API lub zainstalować je, korzystając z jednej z poniższych metod.

Korzystanie z Menedżera pakietów NuGet

Korzystanie z konsoli Menedżera pakietów

PM> Install-Package Aspose.Words

Wygeneruj dokument programu Word z szablonu przy użyciu obiektów C#

Przede wszystkim zobaczmy, jak wypełnić szablon programu Word przy użyciu obiektów języka C#. W tym celu utworzymy dokument programu Word (DOC/DOCX) z następującymi symbolami zastępczymi jako treścią dokumentu:

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

Tutaj nadawca jest obiektem następującej klasy, której użyjemy do wypełnienia szablonu.

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

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

Teraz użyjemy mechanizmu raportowania Aspose.Words do wygenerowania dokumentu Word z szablonu i obiektu klasy Sender, wykonując poniższe kroki.

  • Utwórz obiekt klasy Document i zainicjuj go ścieżką szablonu Worda.
  • Utwórz i zainicjuj obiekt klasy Sender.
  • Utwórz instancję klasy ReportingEngine.
  • Wypełnij szablony za pomocą funkcji ReportingEngine.BuildReport(), która jako parametry przyjmuje obiekt dokumentu, źródło danych i nazwę źródła danych.
  • Zapisz wygenerowany dokument Worda metodą Document.Save().

Poniższy przykładowy kod pokazuje, jak wygenerować dokument programu Word z szablonu w języku C#.

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");

Wyjście

Wygeneruj dokument programu Word ze źródła danych XML w języku C#

Do generowania dokumentu programu Word ze źródła danych XML użyjemy nieco bardziej złożonego szablonu programu Word z następującymi symbolami zastępczymi:

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

Źródło danych XML, którego użyłem w tym przykładzie, podano poniżej.

<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>

Poniżej przedstawiono kroki, aby wygenerować dokument programu Word ze źródła danych XML:

  • Utwórz instancję klasy Document i zainicjuj ją ścieżką szablonu programu Word.
  • Utwórz instancję klasy XmlDataSource i zainicjuj ją ścieżką pliku XML.
  • Utwórz instancję klasy ReportingEngine.
  • Użyj metody ReportingEngine.BuildReport() w taki sam sposób, jak użyliśmy wcześniej do wypełnienia szablonu programu Word.
  • Zapisz wygenerowany dokument programu Word za pomocą metody Document.Save().

Poniższy przykładowy kod pokazuje, jak wygenerować dokument programu Word ze źródła danych XML w języku C#.

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");

Wyjście

Wygeneruj dokument programu Word ze źródła danych JSON w języku C#

Zobaczmy teraz, jak wygenerować dokument programu Word przy użyciu źródła danych JSON. W tym przykładzie wygenerujemy listę klientów pogrupowanych według ich menedżerów. W tym przypadku szablon Worda wyglądałby następująco:

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

Poniżej przedstawiono źródło danych JSON, którego użyjemy do wypełnienia szablonu:

[
   {
       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
           }
       ]
   },
]

Do generowania dokumentu Word z formatu JSON użyjemy klasy JsonDataSource do ładowania i używania źródła danych JSON, a pozostałe kroki pozostaną takie same. Poniższy przykładowy kod pokazuje, jak wygenerować dokument programu Word z szablonu przy użyciu formatu JSON w języku C#.

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");

Wyjście

Wygeneruj dokument programu Word ze źródła danych CSV w języku C#

Do wygenerowania dokumentu programu Word z pliku CSV użyjemy następującego szablonu programu Word:

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

Szablon zostanie wypełniony następującymi danymi CSV:

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

Przejdźmy teraz do kodu C#. Tutaj również wszystkie kroki pozostaną takie same, z wyjątkiem jednej zmiany polegającej na użyciu klasy CsvDataSource do załadowania danych CSV. Poniższy przykładowy kod pokazuje, jak wygenerować dokument programu Word ze źródła danych CSV.

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");

Wyjście

Wypróbuj Aspose.Words dla platformy .NET za darmo

Możesz wypróbować Aspose.Words for .NET korzystając z bezpłatnej tymczasowej licencji.

Wniosek

W tym artykule nauczyłeś się generować dokumenty programu Word z szablonów przy użyciu języka C#. Ponadto widziałeś, jak używać obiektów, źródeł danych XML, JSON i CSV do generowania dokumentów Word. Możesz dowiedzieć się więcej o interfejsie API automatyzacji C# Word, korzystając z documentation. Ponadto możesz skontaktować się z nami za pośrednictwem naszego forum.

Zobacz też