สร้าง Word จากเทมเพลตใน C #

การสร้างเอกสาร Word แบบอัตโนมัติถูกใช้อย่างแพร่หลายโดยองค์กรต่างๆ ในการสร้างรายงานจำนวนมาก ในบางกรณี เอกสารจะถูกสร้างขึ้นตั้งแต่เริ่มต้น ในทางกลับกัน เทมเพลตที่กำหนดไว้ล่วงหน้าจะใช้เพื่อสร้างเอกสาร Word โดยการใส่ตัวยึดตำแหน่ง ในบทความนี้ ฉันจะสาธิตวิธีสร้างเอกสาร Word จากเทมเพลตแบบไดนามิกและแบบเป็นโปรแกรมใน C# คุณจะได้รู้วิธีเติมเทมเพลต Word จากแหล่งข้อมูลประเภทต่างๆ

สถานการณ์ต่อไปนี้พร้อมกับตัวอย่างรหัสจะกล่าวถึงในบทความนี้:

C# Word Automation API

เราจะใช้ Aspose.Words สำหรับ .NET - API การทำงานอัตโนมัติของ Word ที่ช่วยให้คุณสร้างเอกสาร Word ตั้งแต่เริ่มต้นหรือโดยการเติมเทมเพลต Word ที่กำหนดไว้ล่วงหน้า คุณสามารถ ดาวน์โหลด ไบนารีของ API หรือติดตั้งโดยใช้วิธีใดวิธีหนึ่งต่อไปนี้

ใช้ NuGet Package Manager

การใช้คอนโซลผู้จัดการแพ็คเกจ

PM> Install-Package Aspose.Words

สร้างเอกสาร Word จากเทมเพลตโดยใช้วัตถุ C#

ก่อนอื่น เรามาดูวิธีเติมเทมเพลต Word โดยใช้วัตถุ C# สำหรับสิ่งนี้ เราจะสร้างเอกสาร 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 เพื่อสร้างเอกสาร Word จากเทมเพลตและวัตถุของคลาส Sender โดยทำตามขั้นตอนด้านล่าง

  • สร้างวัตถุของคลาส Document และเริ่มต้นด้วยพาธของเทมเพลต Word
  • สร้างและเริ่มต้นวัตถุของคลาส Sender
  • ยกตัวอย่างคลาส ReportingEngine
  • เติมเทมเพลตโดยใช้ ReportingEngine.BuildReport() ซึ่งใช้อ็อบเจ็กต์ของเอกสาร แหล่งข้อมูล และชื่อของแหล่งข้อมูลเป็นพารามิเตอร์
  • บันทึกเอกสาร Word ที่สร้างขึ้นโดยใช้เมธอด Document.Save()

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างเอกสาร Word จากเทมเพลตใน 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");

เอาต์พุต

สร้างเอกสาร Word จากแหล่งข้อมูล XML ใน C#

สำหรับการสร้างเอกสาร Word จากแหล่งข้อมูล XML เราจะใช้เทมเพลต Word ที่ซับซ้อนขึ้นเล็กน้อยพร้อมตัวยึดต่อไปนี้:

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

แหล่งข้อมูล XML ที่ฉันใช้ในตัวอย่างนี้มีดังต่อไปนี้

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

ต่อไปนี้เป็นขั้นตอนในการสร้างเอกสาร Word จากแหล่งข้อมูล XML:

  • สร้างอินสแตนซ์ของคลาส Document และเริ่มต้นด้วยพาธของเทมเพลต Word
  • สร้างอินสแตนซ์ของคลาส XmlDataSource และเริ่มต้นด้วยเส้นทางของไฟล์ XML
  • สร้างอินสแตนซ์คลาส ReportingEngine
  • ใช้เมธอด ReportingEngine.BuildReport() แบบเดียวกับที่เราเคยใช้มาก่อนเพื่อเติมข้อมูลในเทมเพลต Word
  • บันทึกเอกสาร Word ที่สร้างขึ้นโดยใช้เมธอด Document.Save()

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างเอกสาร Word จากแหล่งข้อมูล XML ใน 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");

เอาต์พุต

สร้างเอกสาร Word จากแหล่งข้อมูล JSON ใน C

มาดูวิธีสร้างเอกสาร Word โดยใช้แหล่งข้อมูล JSON กัน ในตัวอย่างนี้ เราจะสร้างรายชื่อลูกค้าที่จัดกลุ่มตามผู้จัดการของพวกเขา ต่อไปนี้จะเป็นเทมเพลต Word ในกรณีนี้:

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

ต่อไปนี้คือแหล่งข้อมูล JSON ที่เราจะใช้เพื่อเติมข้อมูลเทมเพลต:

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

สำหรับการสร้างเอกสาร Word จาก JSON เราจะใช้คลาส JsonDataSource สำหรับการโหลดและใช้แหล่งข้อมูล JSON และขั้นตอนที่เหลือจะยังคงเหมือนเดิม ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างเอกสาร Word จากเทมเพลตโดยใช้ JSON ใน 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");

เอาต์พุต

สร้างเอกสาร Word จากแหล่งข้อมูล CSV ใน C

สำหรับการสร้างเอกสาร Word จาก CSV เราจะใช้เทมเพลต Word ต่อไปนี้:

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

เทมเพลตจะเติมด้วยข้อมูล 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

ตอนนี้เรามาที่รหัส C # ขั้นตอนทั้งหมดจะยังคงเหมือนเดิม ยกเว้นการเปลี่ยนแปลงอย่างหนึ่งคือ เราจะใช้คลาส CsvDataSource เพื่อโหลดข้อมูล CSV ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการสร้างเอกสาร Word จากแหล่งข้อมูล 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");

เอาต์พุต

ลอง Aspose.Words สำหรับ .NET ฟรี

คุณสามารถลองใช้ Aspose.Words สำหรับ .NET โดยใช้ ใบอนุญาตชั่วคราว ฟรี

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีสร้างเอกสาร Word จากเทมเพลตโดยใช้ C# นอกจากนี้ คุณได้เห็นวิธีใช้แหล่งข้อมูล XML, JSON และ CSV เพื่อสร้างเอกสาร Word คุณสามารถสำรวจเพิ่มเติมเกี่ยวกับ C# Word automation API ได้โดยใช้ เอกสารประกอบ นอกจากนี้ คุณสามารถติดต่อเราผ่านทาง ฟอรัม

ดูสิ่งนี้ด้วย