Создайте простой отчет с помощью приложения WinForms C#


Это приложение на C# показывает, как создавать документы, заполненные данными, на основе шаблона (*.docx).

Вступление

Mail Merge - это функция, которая позволяет легко создавать документы, заполненные данными, используя шаблон.

Чтобы продемонстрировать, как работает функция Mail Merge писем, давайте создадим приложение WinForms на C#, которое позволяет вводить данные и генерирует "car rental contract" и "insurance policy", заполненные этими данными.

Таким образом, в нашем приложении будет форма для ввода данных: RenterName, OwnerName, Date и т.д.
Кроме того, мы подготовим два шаблона "car-rental-template.docx" и "insurance-template.docx". Приложение будет заполнять шаблоны данными и генерировать готовые документы в формате PDF.

Преимущество этого подхода заключается в том, что вы вводите данные только один раз и получаете множество различных заполненных документов.

This C# App shows how to create 5 populated by data Docx documents from a Word template (*.docx)

Два основных шага:

  1. Создавайте шаблоны в MS Word или используйте готовые «car-rental-template.docx» и «insurance-template.docx»
  2. Создайте приложение Winform на C#, которое позволяет вводить данные и генерировать заполненные документы, выполняя процесс слияния по почте.

1.Создавайте шаблоны в MS Word с Merge Fields

На этом этапе мы должны создать два шаблона.

  1. Для начала откройте MS Word и создайте новые документы с именами «car-rental-template.docx» and «insurance-template.docx».
  2. Добавьте заголовки "Car Rental Contacts" и "Insurance Policy", соответствующие документу.

  3. В разделе "Car Rental Contacts" добавьте поля для объединения и назовите их следующим образом:
    Day, Month, Year, RenterName, RenterAddress, RenterPhone, CarModel, CarVIN, CarMilleage и Period.

  4. В "Страховой полис" добавьте объединяемые поля и назовите их так:
    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»:

car-rental-template.docx
insurance-template.docx

2. Создайте приложение Winform на C#, которое позволяет вводить данные и генерировать заполненные документы

  1. Запустите Visual Studio и Создайте новое приложение WinForms на C# (.Net Framework) с именем "Car Rental".
    Create new WinForms C# Application (.Net Framework) with name CarRental
  2. Вы можете добавить ссылку на SautinSoft.Document сборка двумя способами:

    1. Nuget (быстрый способ):

    (Solution Explorer->щелкните правой кнопкой мыши по "References"->Manage Nuget Packages...->В вкладке "Browse" тип "SautinSoft" и найти "SautinSoft.Document")
    Add SautinSoft.Document.dll via Nuget.

    2. Старый добрый способ, добавив ссылку:

    Прежде всего, скачайте SautinSoft.Document пакет (document_net.zip) из SautinSoft вебсайт.
    Распакуйте document_net.zip и найдите файл сборки "SautinSoft.Document.dll".
    (At the Solution Explorer->щелкните правой кнопкой мыши по "References"->Add Reference...->Просматривать "SautinSoft.Document.dll")
    Add reference to SautinSoft.Document.dll.

    Примечание:

    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) папки.

  3. Увеличьте размер формы и добавьте элемент управления TextBox с именем "tbRenterName" как показано на рисунке ниже:
    Add TextBox control with name tbRenterName.
  4. Добавьте другие элементы управления, чтобы сделать нашу форму такой же, как на картинке:
    Nine (9) TextBoxes: tbRenterAddress, tbRenterPhone, tbCarModel, tbCarVIN, tbCarMileage, tbPeriod, tbDay, tbMonth, tbYear.
    Two (2) CheckBoxes: chkCarContract and chkInsurance.
    One (1) ComboBox: comboFormat.
    One (1) Button: btnRun.
    Add TextBox control with name tbRenterName.

    Здесь вы можете найти готовыеCarRental App

  5. Вот полный код нашего приложения 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);
                }
            }
        }
    }
    

    Скачать

  6. Допустим, у Homer Simpson снова сломалась машина, и ему нужно взять ее напрокат. Запустив приложение с такими данными, вы получите аналогичные результаты:

    Execution of the App.

    В результате мы получаем: «CarRentalContract-Homer Simpson.pdf» and «InsurancePolicy-Homer Simpson.pdf»:

    Car Rental contract in PDF.
    Insurance policy in PDF.

Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу [email protected] или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже:



Вопросы и предложения всегда приветствуются!

Мы разрабатываем компоненты .Net с 2002 года. Мы знаем форматы PDF, DOCX, RTF, HTML, XLSX и Images. Если вам нужна помощь в создании, изменении или преобразовании документов в различных форматах, мы можем вам помочь. Мы напишем для вас любой пример кода абсолютно бесплатно.