Mail Merge - это функция, которая позволяет легко создавать документы, заполненные данными, используя шаблон.
Чтобы продемонстрировать, как работает функция Mail Merge писем, давайте создадим приложение WinForms на C#, которое позволяет вводить данные и генерирует "car rental contract" и "insurance policy", заполненные этими данными.
Таким образом, в нашем приложении будет форма для ввода данных: RenterName, OwnerName, Date и т.д.
                Кроме того,
                мы подготовим два шаблона "car-rental-template.docx" и "insurance-template.docx". Приложение будет
                заполнять шаблоны данными и генерировать готовые документы в формате PDF.
Преимущество этого подхода заключается в том, что вы вводите данные только один раз и получаете множество различных заполненных документов.
На этом этапе мы должны создать два шаблона.
Добавьте заголовки "Car Rental Contacts" и "Insurance Policy", соответствующие документу.
В разделе "Car Rental Contacts" добавьте поля для объединения и назовите их следующим
                        образом:
 Day,
                                Month, Year, RenterName, RenterAddress, RenterPhone, CarModel, CarVIN,
                                CarMilleage
                            и Period.
В "Страховой полис" добавьте объединяемые поля и назовите их так: 
 Day,
                                Month, Year, RenterName, RenterPhone, CarModel
                            и Period.
Если вы уже знакомы с добавлением Merge Fields, вы можете пропустить этот шаг и использовать полностью готовые шаблоны «car-rental-template.docx» и «insurance-template.docx»
Если вы новичок в этой теме и вам нужна помощь, посмотрите, как это сделать. Вставить Merge Fields
В результате мы получаем: «car-rental-template.docx» и «insurance-template.docx»:
Вы можете добавить ссылку на SautinSoft.Document сборка двумя способами:
1. Nuget (быстрый способ):
2. Старый добрый способ, добавив ссылку:
Примечание:
SautinSoft.Document.dll скомпилированный для .NET Core находится внутри(document_net.zip->SautinSoft.Document X.X\Bin\.NET Core X.X) папки.
SautinSoft.Document.dll скомпилирован для .NET Framework находится внутри (document_net.zip->SautinSoft.Document X.X\Bin\.NET Framework X.X) папки.
Здесь вы можете найти готовыеCarRental App
Вот полный код нашего приложения CarRental:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Globalization;
using SautinSoft.Document;
namespace CarRental
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            comboFormat.SelectedIndex = 0;
            // Some Bonus, autocomplite date
            // Year
            tbYear.Text = DateTime.Now.Year.ToString();
            // Month
            CultureInfo ci = new CultureInfo("en-US");
            tbMonth.Text = ci.DateTimeFormat.GetMonthName(DateTime.Now.Month);
            // Day
            tbDay.Text = DateTime.Now.Day.ToString();
        }
        private void btnRun_Click(object sender, EventArgs e)
        {
            // Templates <Template Name, Path to a template file>.
            Dictionary<string, string> templateCollection = new Dictionary<string, string>();
            if (chkCarContract.Checked)
                templateCollection.Add("CarRentalContract", @"d:\car-rental-template.docx");
            if (chkInsurance.Checked)
                templateCollection.Add("InsurancePolicy", @"d:\insurance-template.docx");
            // Create dataSource
            var dataSource = new 
            {
                RenterName = tbRenterName.Text,
                RenterAddress = tbRenterAddress.Text,
                RenterPhone = tbRenterPhone.Text,
                CarModel = tbCarModel.Text,
                CarVIN = tbCarVIN.Text,
                CarMileage = tbCarMileage.Text,
                Period = tbPeriod.Text,
                Day = tbDay.Text,
                Month = tbMonth.Text,
                Year = tbYear.Text
            };
            foreach (KeyValuePair<string, string> template in templateCollection)
            {
                // template.Value - contains a path to template file.
                // For example, "d:\car-rental-template.docx"
                DocumentCore dc = DocumentCore.Load(template.Value);
                // Do Mail Merge
                // Import data to the template.
                dc.MailMerge.Execute(dataSource);
                // Save the ready document
                // Specify extension for the ready document
                string ext = comboFormat.Text;
                // template.Key - contains a name of our ready document                
                // For example, if RenterName is "John", as result we get: "CarRentalContract-John.pdf".
                string readyDocPath = String.Format("{0}-{1}.{2}", template.Key, dataSource.RenterName, ext);
                // The file format is detected automatically from the file extension.
                dc.Save(readyDocPath);
                // Open the ready document for demonstration purposes.
                System.Diagnostics.Process.Start(readyDocPath);
            }
        }
    }
}
Допустим, у Homer Simpson снова сломалась машина, и ему нужно взять ее напрокат. Запустив приложение с такими данными, вы получите аналогичные результаты:
В результате мы получаем: «CarRentalContract-Homer Simpson.pdf» and «InsurancePolicy-Homer Simpson.pdf»:
Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.ru или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже:
 
            
 
 
    
