Hasilkan Word dari templat di C #

Pembuatan dokumen Word secara otomatis banyak digunakan oleh perusahaan untuk membuat banyak laporan. Dalam beberapa kasus, dokumen dibuat dari awal. Di sisi lain, templat yang telah ditentukan sebelumnya digunakan untuk menghasilkan dokumen Word dengan mengisi placeholder. Pada artikel ini, saya akan mendemonstrasikan cara membuat dokumen Word dari template secara dinamis dan terprogram dalam C#. Anda akan mengetahui cara mengisi template Word dari berbagai jenis sumber data.

Skenario berikut bersama dengan contoh kode akan dibahas dalam artikel ini:

API Otomatisasi Kata C#

Kami akan menggunakan Aspose.Words for .NET - API otomatisasi Word yang memungkinkan Anda membuat dokumen Word dari awal atau dengan mengisi templat Word yang telah ditentukan sebelumnya. Anda dapat mengunduh binari API atau menginstalnya menggunakan salah satu metode berikut.

Menggunakan Manajer Paket NuGet

Menggunakan Konsol Pengelola Paket

PM> Install-Package Aspose.Words

Hasilkan Dokumen Word dari Templat menggunakan Objek C#

Pertama-tama, mari kita lihat cara mengisi template Word menggunakan objek C#. Untuk ini, kami akan membuat dokumen Word (DOC/DOCX) dengan placeholder berikut sebagai konten dokumen:

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

Di sini, pengirim adalah objek dari kelas berikut yang akan kita gunakan untuk mengisi template.

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

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

Sekarang, kita akan menggunakan mesin pelaporan Aspose.Words untuk menghasilkan dokumen Word dari template dan objek kelas Pengirim dengan mengikuti langkah-langkah di bawah ini.

  • Buat objek dari kelas Document dan inisialisasi dengan path template Word.
  • Buat dan inisialisasi objek kelas Pengirim.
  • Membuat instance ReportingEngine kelas.
  • Isi template menggunakan ReportingEngine.BuildReport() yang menggunakan objek Document, sumber data, dan nama sumber data sebagai parameter.
  • Simpan dokumen Word yang dihasilkan menggunakan metode Document.Save().

Contoh kode berikut menunjukkan cara membuat dokumen Word dari template di 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");

Keluaran

Hasilkan Dokumen Word dari Sumber Data XML di C#

Untuk menghasilkan dokumen Word dari sumber data XML, kami akan menggunakan templat Word yang sedikit lebih rumit dengan placeholder berikut:

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

Sumber data XML yang saya gunakan dalam contoh ini diberikan di bawah ini.

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

Berikut ini adalah langkah-langkah untuk menghasilkan dokumen Word dari sumber data XML:

  • Buat instance kelas Document dan inisialisasi dengan jalur template Word.
  • Buat instance dari kelas XmlDataSource dan inisialisasi dengan jalur file XML.
  • Instansiasi kelas ReportingEngine.
  • Gunakan metode ReportingEngine.BuildReport() dengan cara yang sama seperti yang telah kita gunakan sebelumnya untuk mengisi template Word.
  • Simpan dokumen Word yang dihasilkan menggunakan metode Document.Save().

Contoh kode berikut menunjukkan cara membuat dokumen Word dari sumber data XML di 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");

Keluaran

Hasilkan Dokumen Word dari Sumber Data JSON di C#

Sekarang mari kita lihat cara membuat dokumen Word menggunakan sumber data JSON. Dalam contoh ini, kami akan membuat daftar klien yang dikelompokkan menurut manajernya. Berikut ini adalah templat Word dalam kasus ini:

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

Berikut ini adalah sumber data JSON yang akan kita gunakan untuk mengisi template:

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

Untuk membuat dokumen Word dari JSON, kita akan menggunakan kelas JsonDataSource untuk memuat dan menggunakan sumber data JSON dan langkah selanjutnya akan tetap sama. Contoh kode berikut menunjukkan cara membuat dokumen Word dari template menggunakan JSON di 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");

Keluaran

Hasilkan Dokumen Word dari Sumber Data CSV di C

Untuk menghasilkan dokumen Word dari CSV, kami akan menggunakan templat Word berikut:

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

Template akan diisi dengan data CSV berikut:

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

Sekarang, mari kita ke kode C#. Semua langkah di sini juga akan tetap sama kecuali untuk satu perubahan yaitu kita akan menggunakan kelas CsvDataSource untuk memuat data CSV. Contoh kode berikut menunjukkan cara membuat dokumen Word dari sumber data 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");

Keluaran

Coba Aspose.Words for .NET Gratis

Anda dapat mencoba Aspose.Words for .NET menggunakan gratis lisensi sementara.

Kesimpulan

Pada artikel ini, Anda telah mempelajari cara membuat dokumen Word dari template menggunakan C#. Selanjutnya, Anda telah melihat bagaimana menggunakan sumber data objek, XML, JSON dan CSV untuk menghasilkan dokumen Word. Anda dapat menjelajahi lebih lanjut tentang C# Word automation API menggunakan dokumentasi. Selain itu, Anda dapat menghubungi kami melalui forum kami.

Lihat juga