Как использовать C# для создания документов Word на основе шаблона
Обзор
Шаблон Word представляет собой документ с заранее определенной структурой, содержимым и стилями. Пользователям нужно только добавить или заменить небольшое количество контента, чтобы создать свои собственные документы. В этой статье я расскажу, как программно создавать документы Word из шаблона, заменяя заполнители (строки) новыми строками или изображениями с помощью Free Spire.Doc for .NET.
Установка Free Spire.Doc for .NET
Во-первых, нужно установить Free Spire.Doc for .NET. Мы можем сделать это через NuGet. Откройте Visual Studio, выберите меню «Tools» (Инструменты), затем выберите «NuGet Package Manager» (Менеджер пакетов NuGet) и «Package Manager Console» (Консоль менеджера пакетов). В консоли введите следующую команду:
Install-Package FreeSpire.Doc
Создание шаблона
Следующий скриншот показывает шаблон, созданный в MS Word. Строки вида «#name#», «#address#» являются заполнителями, которые будут заменены новыми строками. Заполнитель «#photograph#» будет заменен изображением. Не забудьте применить форматирование (размер шрифта, стиль шрифта, выравнивание и т. д.) к заполнителям, чтобы новый контент наследовал это форматирование.

Создание документа Word на основе шаблона в C#
Шаги по замене заполнителей в шаблоне Word с использованием Free Spire.Doc for .NET следующие:
- Создайте объект Document.
- Загрузите шаблон Word с помощью метода Document.LoadFromFile().
- Получите заполнители и новые строки, сохраненные в словаре.
- Замените заполнители новыми строками с помощью метода Document.Replace(string matchString, string newValue, bool caseSensitive, bool wholeWord).
- Замените заполнитель изображением с помощью пользовательского метода ReplaceTextWithImage(Document document, String stringToReplace, String imagePath).
- Сохраните документ в файл Word с помощью метода Document.SaveToFile().
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System;
using System.Collections.Generic;
using System.Drawing;
namespace ReplacePlaceholdersInWord
{
class Program
{
static void Main(string[] args)
{
// Создание объекта Document
Document document = new Document();
// Загрузка шаблона
document.LoadFromFile("C:\Users\Administrator\Desktop\Template.docx");
// Сохранение старых строк — «заполнителей» и новых строк в словаре
Dictionary replaceDict = new Dictionary();
replaceDict.Add("#name#«, «Kaila Smith»);
replaceDict.Add("#address#«, «123 Michigan Street, Bloomfield, MI94141»);
replaceDict.Add("#telephone#«, «537286»);
replaceDict.Add("#mail#«, «kaila@hotmail.com»);
replaceDict.Add("#nationality#«, «United States»);
replaceDict.Add("#birth#«, «July 12th, 1992»);
replaceDict.Add("#gender#«, «Female»);
//Замена строк новыми строками
foreach (KeyValuePair kvp in replaceDict)
{
document.Replace(kvp.Key, kvp.Value, true, true);
}
//Получение пути к изображению
String imagePath = «C:\Users\Administrator\Desktop\photo.jpg»;
// Замена строки в шаблоне на изображение
ReplaceTextWithImage(document, «#photograph#», imagePath);
// Сохранение файла документа
document.SaveToFile("ReplacePlaceholders.docx", FileFormat.Docx);
document.Close();
}
// Замена строки в документе Word на изображение
static void ReplaceTextWithImage(Document document, String stringToReplace, String imagePath)
{
TextSelection[] selections = document.FindAllString(stringToReplace, false, true);
Image image = Image.FromFile(imagePath);
int index = 0;
TextRange range = null;
foreach (TextSelection selection in selections)
{
DocPicture pic = new DocPicture(document);
pic.LoadImage(image);
range = selection.GetAsOneRange();
index = range.OwnerParagraph.ChildObjects.IndexOf(range);
range.OwnerParagraph.ChildObjects.Insert(index, pic);
range.OwnerParagraph.ChildObjects.Remove(range);
}
}
}
}
Файлы результатов:

Другие функции
Кроме создания Word-документов на основе шаблона, Free Spire.Doc for .NET также предоставляет множество других функций, таких как:
— Поддержка создания, изменения и чтения Word-документов
— Поддержка добавления, удаления и изменения элементов документа, таких как параграфы, таблицы, изображения и т. д.
— Поддержка настройки стилей документа, шрифтов, цветов и т. д.
— Поддержка экспорта Word-документа в форматы PDF, HTML, RTF и т. д.