Создание отчетов и Mail Merge: Создайте простой отчет с использованием C# и .Net


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

Вступление

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

Чтобы проиллюстрировать, как работает функция Mail Merge, давайте создадим приложение C#, которое генерирует конверты "Happy New Year" для семьи Simpson. В результате мы получим пять личных поздравлений Happy New Year в одном документе.

This C# App shows how to create 5 populated by data Docx documents from a Word template (*.docx)
Five personal greetings in the single document.

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

  1. Создать шаблон «envelope-template.docx» в MS Word с полями "Name" и "FamilyName".
  2. Создайте консольное приложение на C#, которое выполняет Mail Merge между данными Simpson и шаблоном и генерирует «simpson-family.docx»

1. Создайте шаблон конверта в MS Word: envelope-template.docx

Для начала откройте MS Word и создайте новый документ с таким названием "envelope-template.docx". Затем добавьте несколько изображений и текст, чтобы поздравить семью Simpsons. Далее, наша главная цель - добавить два Fields: "Name" и "FamilyName".
Если вы уже знакомы с добавлением Merge Fields, Вы можете пропустить этот шаг и использовать полностью готовые «envelope-template.docx»

Как вставить Merge Field

  1. Выберите вкладку "INSERT".
  2. Щелкните по пиктограмме "Quick Parts".
  3. Выберите и щелкните по пункту меню "Field..".
  4. В открывшемся окне перейдите к разделу "Field names:" и выберите "MergeField".
  5. В поле "Field name:" введите Name.
  6. Нажмите "OK".
How to create a template with Merge Fields in MS Word

Здесь Вы можете получить дополнительную информацию о том, как Вставить Merge Fields

В результате выполнения шага 1 мы должны получить:envelope-template.docx

2. Создайте консольное приложение на C#, которое выполняет Mail Merge

  1. Запустите Visual Studio и Создайтеновое консольное приложение C# (.Net Framework или .Net Core) с именем "Simpsons".
  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. Введите код нашего приложения: (Мы также подготовили код для VB.Net из сети)

Полный код

using System;
using System.IO;
using SautinSoft.Document;

namespace Sample
{
    class Sample
    {
        static void Main(string[] args)
        {
            // Get your free 30-day key here:   
            // https://sautinsoft.com/start-for-free/

            MailMergeSimpleEnvelope();
        }

        /// <summary>
        /// Generates 5 envelopes "Happy New Year" for Simpson family using the one template.
        /// </summary>
        /// <remarks>
        /// See details at: https://sautinsoft.com/products/document/help/net/developer-guide/mail-merge-simple-report-net-csharp-vb.php
        /// </remarks>
        public static void MailMergeSimpleEnvelope()
        {
            string templatePath = @"..\..\..\envelope-template.docx";
            string resultPath = "Simpson-family.docx";

            DocumentCore dc = DocumentCore.Load(templatePath);

            var dataSource = new[] { new { Name = "Homer", FamilyName = "Simpson" },
                                new { Name = "Marge ", FamilyName = "Simpson" },
                                new { Name = "Bart", FamilyName = "Simpson" },
                                new { Name = "Lisa", FamilyName = "Simpson" },
                                new { Name = "Maggie", FamilyName = "Simpson" }};

            dc.MailMerge.Execute(dataSource);
            dc.Save(resultPath);

            // Open the result for demonstration purposes.
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(resultPath) { UseShellExecute = true });
        }
    }
}

Download

Option Infer On

Imports System
Imports System.IO
Imports SautinSoft.Document
Module Sample
    Sub Main()
        MailMergeSimpleEnvelope()
    End Sub
    ''' Get your free 30-day key here:   
    ''' https://sautinsoft.com/start-for-free/
    ''' <summary>
    ''' Generates 5 envelopes "Happy New Year" for Simpson family using the one template.
    ''' </summary>
    ''' <remarks>
    ''' See details at: https://sautinsoft.com/products/document/help/net/developer-guide/mail-merge-simple-report-net-csharp-vb.php
    ''' </remarks>
    Sub MailMergeSimpleEnvelope()
        Dim templatePath As String = "..\..\..\envelope-template.docx"
        Dim resultPath As String = "Simpson-family.docx"

        Dim dc As DocumentCore = DocumentCore.Load(templatePath)

        Dim dataSource = {
            New With {
                Key .Name = "Homer",
                Key .FamilyName = "Simpson"
            },
            New With {
                Key .Name = "Marge ",
                Key .FamilyName = "Simpson"
            },
            New With {
                Key .Name = "Bart",
                Key .FamilyName = "Simpson"
            },
            New With {
                Key .Name = "Lisa",
                Key .FamilyName = "Simpson"
            },
            New With {
                Key .Name = "Maggie",
                Key .FamilyName = "Simpson"
            }
        }

        dc.MailMerge.Execute(dataSource)
        dc.Save(resultPath)

        ' Open the result for demonstration purposes.
        System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(resultPath) With {.UseShellExecute = True})
    End Sub

End Module

Download


После выполнения метода слияния почты мы получим«simpson-family.docx» в результате.

How to create a template with Merge Fields in MS Word

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



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

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