Вставить DataTable в документ Word на С#

Как разработчику .NET вам приходится очень часто иметь дело с объектами DataTable. Особенно, когда вам нужно импортировать или экспортировать данные из баз данных или файлов XML/JSON. При программном создании документов может потребоваться вставка данных из объектов DataTable непосредственно в таблицу в документах Word. Для таких случаев позвольте мне дать вам идеальное и простое решение для вставки данных из DataTable в документ Word на C#.

Библиотека C# для вставки DataTable в Word DOC — скачать бесплатно

Для импорта данных из объектов DataTable в документы Word мы будем использовать Aspose.Words for .NET. Это многофункциональная библиотека, которая позволяет создавать и обрабатывать документы MS Word. Вы можете скачать его DLL или установить из NuGet.

Скачать DLL

Установить через NuGet

PM> Install-Package Aspose.Words

C # Вставить DataTable в документ Word - шаги

Ниже приведены шаги, которые мы выполним, чтобы получить данные из DataTable и вставить их в документ Word.

  • Загрузите данные из базы данных или файла данных в объект DataTable.
  • Создайте новый документ Word и добавьте в него новую таблицу.
  • Прокрутите строки в DataTable и вставьте каждую строку в таблицу Word.

Вот и все.

Давайте теперь посмотрим, как преобразовать эти шаги в код C# и импортировать DataTable в документ Word.

Вставить данные из DataTable в Word DOC на С#

Во-первых, мы напишем метод, который принимает DocumentBuilder для построения документа, DataTable с данными и дополнительный параметр для включения/отключения импорта заголовков столбцов. Более того, он возвращает объект Table.

Ниже приведен рабочий процесс этого метода.

  • Создайте новую таблицу и получите ее ссылку в объект Table.
  • Вставьте столбцы в таблицу в соответствии со столбцами в DataTable.
  • Установите толщину шрифта, если первая строка предназначена для заголовков.
  • Перебрать каждую DataRow в коллекции DataTable.Rows.
  • Вставьте новую ячейку для каждого значения и установите соответствующий тип данных.
  • Верните объект таблицы.

Ниже приведена реализация метода импорта данных из DataTable в таблицу документа Word на языке C#.

///<summary>
/// Импортирует содержимое из указанного DataTable в новый объект Aspose.Words Table. 
/// Таблица вставляется в текущую позицию построителя документов и с использованием форматирования текущего построителя, если оно определено.
///</summary>
public static Table ImportTableFromDataTable(DocumentBuilder builder, DataTable dataTable, bool importColumnHeadings)
{
    Table table = builder.StartTable();

    // Проверьте, должны ли имена столбцов из источника данных включаться в строку заголовка.
    if (importColumnHeadings)
    {
        // Сохраните исходные значения этих свойств перед их изменением.
        bool boldValue = builder.Font.Bold;
        ParagraphAlignment paragraphAlignmentValue = builder.ParagraphFormat.Alignment;

        // Отформатируйте строку заголовка с соответствующими свойствами.
        builder.Font.Bold = true;
        builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

        // Создайте новую строку и вставьте имя каждого столбца в первую строку таблицы.
        foreach (DataColumn column in dataTable.Columns)
        {
            builder.InsertCell();
            builder.Writeln(column.ColumnName);
        }

        builder.EndRow();

        // Восстановите исходное форматирование.
        builder.Font.Bold = boldValue;
        builder.ParagraphFormat.Alignment = paragraphAlignmentValue;
    }

    foreach (DataRow dataRow in dataTable.Rows)
    {
        foreach (object item in dataRow.ItemArray)
        {
            // Вставьте новую ячейку для каждого объекта.
            builder.InsertCell();

            switch (item.GetType().Name)
            {
                case "DateTime":
                    // Определите пользовательский формат для дат и времени.
                    DateTime dateTime = (DateTime)item;
                    builder.Write(dateTime.ToString("MMMM d, yyyy"));
                    break;
                default:
                    // По умолчанию любой другой элемент будет вставлен как текст.
                    builder.Write(item.ToString());
                    break;
            }

        }

        // После того, как мы вставим все данные из текущей записи, мы можем закончить строку таблицы.
        builder.EndRow();
    }

    // Мы закончили вставлять все данные из DataTable, можно заканчивать таблицу.
    builder.EndTable();

    return table;
}

Теперь пришло время вызвать этот метод и вставить DataTable в документ Word.

Импорт DataTable в документ Word на С#

Ниже приведены шаги для импорта данных из DataTable в документ Word на C#.

  • Создайте новый документ Word (или загрузите существующий) с помощью класса Document.
  • Чтение данных из базы данных/файла в объект DataTable.
  • Вызовите метод, который мы написали в предыдущем разделе, и получите возвращенную таблицу.
  • Установить форматирование таблицы.
  • Сохраните файл Word с помощью метода Document.Save().

В следующем примере кода показано, как вставить DataTable в документ Word на C#.

// Создайте новый документ.
Document doc = new Document();

// Мы можем поместить туда, где мы хотим, чтобы таблица была вставлена, а также указать любое дополнительное форматирование.
// также наносится на стол.
DocumentBuilder builder = new DocumentBuilder(doc);

// Мы хотим повернуть ландшафт страницы, поскольку мы ожидаем широкую таблицу.
doc.FirstSection.PageSetup.Orientation = Orientation.Landscape;

DataSet ds = new DataSet();
ds.ReadXml("Employees.xml");

// Получите данные из нашего источника данных, который хранится в виде DataTable.
DataTable dataTable = ds.Tables[0];

// Создайте таблицу в документе из данных, содержащихся в DataTable.
Table table = ImportTableFromDataTable(builder, dataTable, true);

// Мы можем применить стиль таблицы как очень быстрый способ применить форматирование ко всей таблице.
table.StyleIdentifier = StyleIdentifier.MediumList2Accent1;
table.StyleOptions = TableStyleOptions.FirstRow | TableStyleOptions.RowBands | TableStyleOptions.LastColumn;

// Для нашей таблицы мы хотим удалить заголовок для столбца изображения.
table.FirstRow.LastCell.RemoveAllChildren();

// Сохраните выходной документ.
doc.Save("Table.docx");

C# DataTable to Word Importer Library — бесплатная лицензия

Вы можете получить бесплатную временную лицензию на использование Aspose.Words for .NET без ограничений на пробную версию.

Вывод

В этой статье вы узнали, как вставлять данные из DataTable в документ Word на C#. Вы можете легко интегрировать пример кода в свои приложения и импортировать данные непосредственно из базы данных/XML/JSON в документы Word с помощью DataTable.

Библиотека слов .NET — Подробнее

Вы можете посетить документацию Aspose.Words for .NET, чтобы узнать больше о библиотеке. Если у вас возникнут какие-либо вопросы, сообщите нам об этом через наш форум.

Смотрите также