Generovat Word ze šablony v C#

Automatizované generování dokumentů aplikace Word je široce používáno podniky pro vytváření velkého množství sestav. V některých případech jsou dokumenty vytvořeny od začátku. Na druhou stranu se předdefinované šablony používají ke generování dokumentů aplikace Word vyplněním zástupných symbolů. V tomto článku ukážu, jak dynamicky a programově generovat dokumenty Wordu ze šablon v C#. Dozvíte se, jak naplnit šablony aplikace Word z různých typů zdrojů dat.

Následující scénáře spolu s ukázkami kódu budou popsány v tomto článku:

C# Word Automation API

Použijeme Aspose.Words for .NET – rozhraní API pro automatizaci aplikace Word, které vám umožňuje generovat dokument aplikace Word od začátku nebo vyplněním předdefinovaných šablon aplikace Word. Můžete si stáhnout binární soubory API nebo je nainstalovat pomocí jedné z následujících metod.

Pomocí Správce balíčků NuGet

Pomocí konzoly Správce balíčků

PM> Install-Package Aspose.Words

Vygenerujte dokument Word ze šablony pomocí objektů C#

Nejprve se podívejme, jak naplnit šablonu aplikace Word pomocí objektů C#. Za tímto účelem vytvoříme dokument Word (DOC/DOCX) s následujícími zástupnými symboly jako obsahem dokumentu:

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

Zde je odesílatel objektem následující třídy, kterou použijeme k naplnění šablony.

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

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

Nyní použijeme nástroj pro vytváření sestav Aspose.Words k vygenerování dokumentu aplikace Word ze šablony a objektu třídy Sender podle níže uvedených kroků.

  • Vytvořte objekt třídy Document a inicializujte jej s cestou šablony aplikace Word.
  • Vytvořte a inicializujte objekt třídy Sender.
  • Instantiate ReportingEngine třídy.
  • Naplňte šablony pomocí ReportingEngine.BuildReport(), které jako parametry převezme objekt dokumentu, zdroj dat a název zdroje dat.
  • Uložte vygenerovaný dokument Word pomocí metody Document.Save().

Následující ukázka kódu ukazuje, jak vygenerovat dokument aplikace Word ze šablony v jazyce 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");

Výstup

Generování dokumentu Word ze zdroje dat XML v C#

Pro generování dokumentu aplikace Word ze zdroje dat XML použijeme o něco složitější šablonu aplikace Word s následujícími zástupnými symboly:

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

Zdroj dat XML, který jsem použil v tomto příkladu, je uveden níže.

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

Níže jsou uvedeny kroky pro vygenerování dokumentu aplikace Word ze zdroje dat XML:

  • Vytvořte instanci třídy Document a inicializujte ji pomocí cesty šablony aplikace Word.
  • Vytvořte instanci třídy XmlDataSource a inicializujte ji s cestou k souboru XML.
  • Okamžitá třída ReportingEngine.
  • Použijte metodu ReportingEngine.BuildReport() stejným způsobem, jaký jsme použili dříve k naplnění šablony aplikace Word.
  • Uložte vygenerovaný dokument aplikace Word pomocí metody Document.Save().

Následující ukázka kódu ukazuje, jak vygenerovat dokument aplikace Word ze zdroje dat XML v 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");

Výstup

Generování dokumentu Word ze zdroje dat JSON v C#

Podívejme se nyní, jak vygenerovat dokument Word pomocí zdroje dat JSON. V tomto příkladu vygenerujeme seznam klientů, kteří jsou seskupeni podle jejich manažerů. V tomto případě by šablona Wordu byla následující:

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

Následující by byl zdroj dat JSON, který použijeme k naplnění šablony:

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

Pro generování dokumentu Word z JSON použijeme třídu JsonDataSource pro načtení a použití zdroje dat JSON a zbytek kroků zůstane stejný. Následující ukázka kódu ukazuje, jak vygenerovat dokument aplikace Word ze šablony pomocí JSON v 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");

Výstup

Vygenerujte dokument Word ze zdroje dat CSV v C#

Pro generování dokumentu aplikace Word z CSV použijeme následující šablonu aplikace Word:

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

Šablona bude naplněna následujícími daty 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

Nyní pojďme ke kódu C#. Všechny kroky zůstanou stejné i zde kromě jediné změny, a to, že k načtení CSV dat použijeme třídu CsvDataSource. Následující ukázka kódu ukazuje, jak vygenerovat dokument aplikace Word ze zdroje dat 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");

Výstup

Vyzkoušejte Aspose.Words for .NET zdarma

Aspose.Words for .NET můžete vyzkoušet pomocí bezplatné dočasné licence.

Závěr

V tomto článku jste se naučili generovat dokumenty Wordu ze šablon pomocí C#. Dále jste viděli, jak používat objekty, datové zdroje XML, JSON a CSV ke generování dokumentů aplikace Word. Další informace o automatizačním rozhraní C# Word můžete prozkoumat pomocí dokumentace. Kromě toho nás můžete kontaktovat prostřednictvím našeho fóra.

Viz také