Вставте DataTable у документ Word на C#

Як розробнику .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 у C#

Спочатку ми напишемо метод, який приймає DocumentBuilder для створення документа, DataTable, що містить дані, і додатковий параметр, щоб увімкнути/вимкнути імпорт заголовків стовпців. Крім того, він повертає об’єкт Table.

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

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

Нижче наведено реалізацію методу для імпорту даних із 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 на C#

Нижче наведено кроки для імпорту даних із 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 Word – докладніше

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

Дивись також