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