Tạo Word từ mẫu trong C#

Việc tạo tài liệu Word tự động được các doanh nghiệp sử dụng rộng rãi để tạo vô số báo cáo. Trong một số trường hợp, các tài liệu được tạo từ đầu. Mặt khác, các mẫu được xác định trước được sử dụng để tạo tài liệu Word bằng cách điền vào các trình giữ chỗ. Trong bài viết này, tôi sẽ trình bày cách tạo tài liệu Word từ các mẫu một cách linh hoạt và theo chương trình trong C#. Bạn sẽ biết cách điền các mẫu Word từ các loại nguồn dữ liệu khác nhau.

Các tình huống sau đây cùng với các mẫu mã sẽ được đề cập trong bài viết này:

API tự động hóa từ C#

Chúng tôi sẽ sử dụng Aspose.Words for .NET - API tự động hóa Word cho phép bạn tạo tài liệu Word từ đầu hoặc bằng cách điền vào các mẫu Word được xác định trước. Bạn có thể tải xuống tệp nhị phân của API hoặc cài đặt nó bằng một trong các phương pháp sau.

Sử dụng Trình quản lý gói NuGet

Sử dụng Bảng điều khiển quản lý gói

PM> Install-Package Aspose.Words

Tạo Tài liệu Word từ Mẫu bằng Đối tượng C#

Trước hết, hãy xem cách điền mẫu Word bằng các đối tượng C#. Đối với điều này, chúng tôi sẽ tạo một tài liệu Word (DOC/DOCX) với các trình giữ chỗ sau làm nội dung của tài liệu:

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

Ở đây, người gửi là đối tượng của lớp sau mà chúng ta sẽ sử dụng để điền vào mẫu.

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

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

Bây giờ, chúng ta sẽ sử dụng công cụ báo cáo của Aspose.Words để tạo tài liệu Word từ mẫu và đối tượng của lớp Người gửi bằng cách thực hiện theo các bước bên dưới.

  • Tạo một đối tượng của lớp Document và khởi tạo nó bằng đường dẫn của mẫu Word.
  • Tạo và khởi tạo một đối tượng của lớp Sender.
  • Khởi tạo lớp ReportingEngine.
  • Điền vào các mẫu bằng cách sử dụng ReportingEngine.BuildReport() lấy đối tượng của Tài liệu, nguồn dữ liệu và tên của nguồn dữ liệu làm tham số.
  • Lưu tài liệu Word đã tạo bằng phương pháp Document.Save().

Mẫu mã sau đây cho biết cách tạo tài liệu Word từ mẫu trong 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");

đầu ra

Tạo tài liệu Word từ nguồn dữ liệu XML trong C#

Để tạo tài liệu Word từ nguồn dữ liệu XML, chúng tôi sẽ sử dụng mẫu Word phức tạp hơn một chút với các trình giữ chỗ sau:

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

Nguồn dữ liệu XML mà tôi đã sử dụng trong ví dụ này được đưa ra bên dưới.

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

Sau đây là các bước để tạo tài liệu Word từ nguồn dữ liệu XML:

  • Tạo một thể hiện của lớp Tài liệu và khởi tạo nó bằng đường dẫn của mẫu Word.
  • Tạo một thể hiện của lớp XmlDataSource và khởi tạo nó bằng đường dẫn của tệp XML.
  • Khởi tạo lớp ReportingEngine.
  • Sử dụng phương thức ReportingEngine.BuildReport() giống như cách chúng ta đã sử dụng trước đây để điền vào mẫu Word.
  • Lưu tài liệu Word đã tạo bằng phương thức Document.Save().

Mẫu mã sau đây cho biết cách tạo tài liệu Word từ nguồn dữ liệu XML trong 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");

đầu ra

Tạo tài liệu Word từ nguồn dữ liệu JSON trong C#

Bây giờ chúng ta hãy xem cách tạo tài liệu Word bằng nguồn dữ liệu JSON. Trong ví dụ này, chúng tôi sẽ tạo danh sách khách hàng được nhóm theo người quản lý của họ. Sau đây sẽ là mẫu Word trong trường hợp này:

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

Sau đây sẽ là nguồn dữ liệu JSON mà chúng tôi sẽ sử dụng để điền vào mẫu:

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

Để tạo tài liệu Word từ JSON, chúng ta sẽ sử dụng lớp JsonDataSource để tải và sử dụng nguồn dữ liệu JSON và các bước còn lại sẽ giữ nguyên. Mẫu mã sau đây cho biết cách tạo tài liệu Word từ mẫu bằng cách sử dụng JSON trong 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");

đầu ra

Tạo tài liệu Word từ nguồn dữ liệu CSV trong C#

Để tạo tài liệu Word từ CSV, chúng tôi sẽ sử dụng mẫu Word sau:

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

Mẫu sẽ được điền bằng dữ liệu CSV sau:

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

Bây giờ, hãy đến với mã C#. Tất cả các bước sẽ không thay đổi ở đây ngoại trừ một thay đổi đó là chúng tôi sẽ sử dụng lớp CsvDataSource để tải dữ liệu CSV. Mẫu mã sau đây cho biết cách tạo tài liệu Word từ nguồn dữ liệu 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");

đầu ra

Dùng thử miễn phí Aspose.Words for .NET

Bạn có thể dùng thử Aspose.Words for .NET bằng giấy phép tạm thời miễn phí.

Sự kết luận

Trong bài viết này, bạn đã học cách tạo tài liệu Word từ các mẫu bằng C#. Ngoài ra, bạn đã biết cách sử dụng các đối tượng, nguồn dữ liệu XML, JSON và CSV để tạo tài liệu Word. Bạn có thể khám phá thêm về API tự động hóa C# Word bằng cách sử dụng tài liệu. Ngoài ra, bạn có thể liên hệ với chúng tôi qua diễn đàn của chúng tôi.

Xem thêm