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
- Wygeneruj dokument Word z szablonu przy użyciu wartości obiektu C#
- Wygeneruj dokument programu Word przy użyciu źródła danych XML
- Utwórz dokument programu Word przy użyciu źródła danych JSON
- Wygeneruj dokument programu Word przy użyciu źródła danych CSV
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.