Створення Word із шаблону в C#

Автоматизоване створення документів Word широко використовується підприємствами для створення безлічі звітів. У деяких випадках документи створюються з нуля. З іншого боку, попередньо визначені шаблони використовуються для створення документів Word шляхом заповнення заповнювачів. У цій статті я покажу, як динамічно та програмно генерувати документи Word із шаблонів у C#. Ви дізнаєтеся, як заповнювати шаблони Word із різних типів джерел даних.

У цій статті будуть розглянуті наступні сценарії разом із зразками коду:

C# Word Automation API

Ми будемо використовувати Aspose.Words for .NET – API автоматизації Word, який дозволяє створювати документ Word з нуля або шляхом заповнення попередньо визначених шаблонів Word. Ви можете завантажити двійкові файли API або встановити їх одним із наведених нижче методів.

Використання диспетчера пакетів NuGet

Використання консолі менеджера пакетів

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 for .NET безкоштовно

Ви можете спробувати Aspose.Words for .NET, використовуючи безкоштовну тимчасову ліцензію.

Висновок

У цій статті ви дізналися, як створювати документи Word із шаблонів за допомогою C#. Крім того, ви побачили, як використовувати об’єкти, джерела даних XML, JSON і CSV для створення документів Word. Ви можете дізнатися більше про API автоматизації C# Word за допомогою документації. Крім того, ви можете зв’язатися з нами через наш форум.

Дивись також