翻譯|使用教程|編輯:李顯亮|2020-03-06 14:44:09.300|閱讀 962 次
概述:Word文檔的自動(dòng)生成已被企業(yè)廣泛用于創(chuàng)建大量報(bào)告。在某些情況下,文檔是從頭開始創(chuàng)建的。另一方面,預(yù)定義的模板用于通過填充占位符來生成Word文檔。在本文中,我將演示如何在C#中以動(dòng)態(tài)方式和編程方式從模板生成Word文檔。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Word文檔的自動(dòng)生成已被企業(yè)廣泛用于創(chuàng)建大量報(bào)告。在某些情況下,文檔是從頭開始創(chuàng)建的。另一方面,預(yù)定義的模板用于通過填充占位符來生成Word文檔。
在本文中,我將演示如何在C#中以動(dòng)態(tài)方式和編程方式從模板生成Word文檔。將了解如何從不同類型的數(shù)據(jù)源填充Word模板。本文將介紹以下方案以及代碼示例:
Aspose.Words for .NET已升級(jí)至V20.3,如果你還沒有用過Aspose.Words可以點(diǎn)擊這里下載最新版測(cè)試。
首先,讓我們看看如何使用C#對(duì)象填充Word模板。為此,我們將創(chuàng)建一個(gè)Word文檔(DOC / DOCX),該文檔具有以下占位符作為文檔的內(nèi)容:
<<[sender.Name]>> says: "<<[sender.Message]>>."
在這里,發(fā)送者是以下類的對(duì)象,我們將使用該類來填充模板。
public class Sender { public string Name { get; set; } public string Message { get; set; } public Sender (string _name, string _message) { Name = _name; Message = _message; } }
現(xiàn)在,我們將使用Aspose.Words的報(bào)告引擎,按照以下步驟從Sender類的模板和對(duì)象生成Word文檔。
下面的代碼示例演示如何從C#中的模板生成Word文檔。
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");
輸出結(jié)果
為了從XML數(shù)據(jù)源生成Word文檔,我們將使用帶有以下占位符的更為復(fù)雜的Word模板:
<>Name: <<[Name]>>, Age: <<[Age]>>, Date of Birth: <<[Birth]:"dd.MM.yyyy">> < > Average age: <<[persons.Average(p => p.Age)]>>
下面給出了我在此示例中使用的XML數(shù)據(jù)源。
<Persons> | |
<Person> | |
<Name>John DoeName> | |
<Age>30Age> | |
<Birth>1989-04-01 4:00:00 pmBirth> | |
Person> | |
<Person> | |
<Name>Jane DoeName> | |
<Age>27Age> | |
<Birth>1992-01-31 07:00:00 amBirth> | |
Person> | |
<Person> | |
<Name>John SmithName> | |
<Age>51Age> | |
<Birth>1968-03-08 1:00:00 pmBirth> | |
Person> | |
Persons> |
以下是從XML數(shù)據(jù)源生成Word文檔的步驟:
下面的代碼示例演示如何從C#中的XML數(shù)據(jù)源生成Word文檔。
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");
輸出結(jié)果
現(xiàn)在,讓我們看看如何使用JSON數(shù)據(jù)源生成Word文檔。在此示例中,我們將生成按其經(jīng)理分組的客戶列表。在這種情況下,以下為Word模板:
<>Manager: <<[Name]>> Contracts: < >- <<[Client.Name]>> ($<<[Price]>>) < > <>
以下是我們將用來填充模板的JSON數(shù)據(jù)源:
[ | |
{ | |
姓名:“約翰史密斯”, | |
合同: | |
[ | |
{ | |
客戶: | |
{ | |
姓名:“一家公司” | |
}, | |
價(jià)格:1200000 | |
}, | |
{ | |
客戶: | |
{ | |
姓名:“ B有限公司” | |
}, | |
價(jià)錢:750000 | |
}, | |
{ | |
客戶: | |
{ | |
姓名:“ C&D ” | |
}, | |
價(jià)錢:350000 | |
} | |
] | |
}, | |
{ | |
姓名:“托尼安德森”, | |
合同: | |
[ | |
{ | |
客戶: | |
{ | |
名稱:“ E Corp. ” | |
}, | |
價(jià)錢:650000 | |
}, | |
{ | |
客戶: | |
{ | |
姓名:“ F&Partners ” | |
}, | |
價(jià)錢:550000 | |
} | |
] | |
}, | |
] |
以下是從XML數(shù)據(jù)源生成Word文檔的步驟:
為了從JSON生成Word文檔,我們將使用JsonDataSource類加載和使用JSON數(shù)據(jù)源,其余步驟將保持不變。下面的代碼示例演示如何使用C#中的JSON從模板生成Word文檔。
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");
輸出結(jié)果
為了從CSV生成Word文檔,我們將使用以下Word模板:
<>Name: <<[Column1]>>, Age: <<[Column2]>>, Date of Birth: <<[Column3]:"dd.MM.yyyy">> < > Average age: <<[persons.Average(p => p.Column2)]>>
下面給出了我在此示例中使用的XML數(shù)據(jù)源。
現(xiàn)在,讓我們來看一下C#代碼。除了一個(gè)更改,我們將使用CsvDataSource類加載CSV數(shù)據(jù),此處所有步驟都將保持不變。下面的代碼示例演示如何從CSV數(shù)據(jù)源生成Word文檔。
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");
輸出結(jié)果
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn