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
- Vygenerujte dokument Word ze šablony pomocí hodnot objektu C#
- Vygenerujte dokument Word pomocí zdroje dat XML
- Vytvořte dokument aplikace Word pomocí zdroje dat JSON
- Vygenerujte dokument Word pomocí zdroje dat CSV
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.