Создать таблицу в Word с помощью C# | Создание вложенных таблиц в C#

Таблицы в документе Word — мощный инструмент для организации и представления данных в четком и структурированном формате. Таблица состоит из строк и столбцов, которые пересекаются, образуя ячейки, которые могут содержать текст, числа, изображения или другие элементы. В этой статье мы узнаем, как программно создать таблицу в документах Word с помощью C#. В этой статье показаны различные методы создания таблиц в файле DOCX, поддерживаемые примерами кода.

В этой статье рассматриваются следующие темы:

Библиотека C# для создания таблиц в документах Word

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

Пожалуйста, загрузите DLL или установите ее из NuGet с помощью следующей команды:

PM> Install-Package Aspose.Words

Создание таблицы в документе Word на C#

Существует два способа создания таблиц в документах Word с использованием Aspose.Words for .NET:

  • Использование класса DocumentBuilder
  • Использование DOM (объектная модель документа)

Вы можете выбрать метод, который лучше всего соответствует вашим требованиям. Итак, давайте рассмотрим каждый из этих методов подробно.

Создайте таблицу с помощью DocumentBuilder

Класс DocumentBuilder позволяет эффективно и легко создавать динамические документы с нуля или изменять существующие. Благодаря широкому набору функций мы можем легко вставлять разнообразные элементы контента, включая текст, флажки, объекты OLE, абзацы, списки, таблицы, изображения и многое другое.

Выполните следующие действия, чтобы создать таблицу в документе Word с использованием класса DocumentBuilder.

  1. Создайте объект класса Document.
  2. Создайте объект класса DocumentBuilder.
  3. Создайте новую таблицу с помощью метода StartTable().
  4. Вставьте ячейку с помощью метода InsertCell().
  5. Вставьте текст в ячейку с помощью метода Write().
  6. При необходимости повторите вставку ячеек и текста в ячейки.
  7. Завершите строку с помощью метода EndRow().
  8. Завершите таблицу с помощью метода EndTable().
  9. Наконец, сохраните документ Word с помощью метода Save().

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

// В этом примере кода показано, как создать таблицу в документе Word с помощью C#.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Начните собирать таблицу.
builder.StartTable();
builder.InsertCell();
builder.Write("Row 1, Cell 1 Content.");

// Постройте вторую ячейку.
builder.InsertCell();
builder.Write("Row 1, Cell 2 Content.");

// Вызовите следующий метод, чтобы завершить строку и начать новую строку.
builder.EndRow();

// Постройте первую ячейку второго ряда.
builder.InsertCell();
builder.Write("Row 2, Cell 1 Content");

// Постройте вторую ячейку.
builder.InsertCell();
builder.Write("Row 2, Cell 2 Content.");
builder.EndRow();

// Сигнал о том, что мы закончили построение таблицы.
builder.EndTable();

doc.Save("CreateSimpleTable.docx");
Создать таблицу в Word с помощью DocumentBuilder

Создайте таблицу с помощью DocumentBuilder

Создайте таблицу, используя объектную модель документа (DOM)

Объектная модель документа (DOM) — это представление документа Word в памяти. Он обеспечивает программный доступ для чтения, манипулирования и изменения содержимого и форматирования документа Word.

Следуйте инструкциям ниже, чтобы создать таблицу в документе Word с использованием DOM.

  1. Создайте объект класса Document.
  2. Создайте новую таблицу, используя класс Table().
  3. Добавьте таблицу в тело документа с помощью метода AppendChild().
  4. Создайте объект класса Row и вставьте его в таблицу с помощью метода Table.AppendChild(Row).
  5. Создайте объект класса Cell, задайте параметры форматирования и добавьте текст в ячейку.
  6. Вставьте ячейку в строку с помощью метода Row.AppendChild(Cell).
  7. После этого повторите процесс для любого количества строк.
  8. Наконец, сохраните документ Word с помощью метода Save().

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

// В этом примере кода показано, как создать таблицу в документе Word с помощью DOM на C#.
Document doc = new Document();

// Начнем с создания объекта таблицы. Обратите внимание, что мы должны передать объект документа
// конструктору каждого узла. Это потому, что каждый создаваемый нами узел должен принадлежать
// к какому-то документу.
Table table = new Table(doc);
doc.FirstSection.Body.AppendChild(table);

// Здесь мы могли бы вызвать SureMinimum, чтобы создать для нас строки и ячейки. Этот метод используется
// чтобы убедиться, что указанный узел действителен. В этом случае допустимая таблица должна иметь хотя бы одну строку и одну ячейку.

// Вместо этого мы создадим строку и таблицу самостоятельно.
// Это был бы лучший способ сделать это, если бы мы создавали таблицу внутри алгоритма.
Row row = new Row(doc);
row.RowFormat.AllowBreakAcrossPages = true;
table.AppendChild(row);

// Теперь мы можем применить любые настройки автоподбора.
table.AutoFit(AutoFitBehavior.FixedColumnWidths);

Cell cell = new Cell(doc);
cell.CellFormat.Shading.BackgroundPatternColor = Color.LightBlue;
cell.CellFormat.Width = 80;
cell.AppendChild(new Paragraph(doc));
cell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 1 Text"));

// Добавить ячейку
row.AppendChild(cell);

// Затем мы повторим процесс для других ячеек и строк таблицы.
// Мы также можем ускорить процесс, клонируя существующие ячейки и строки.
row.AppendChild(cell.Clone(false));
row.LastCell.AppendChild(new Paragraph(doc));
row.LastCell.FirstParagraph.AppendChild(new Run(doc, "Row 1, Cell 2 Text"));

// Сохраните документ
doc.Save("InsertTableDirectly.docx");
Создайте таблицу, используя объектную модель документа (DOM)

Создайте таблицу, используя объектную модель документа (DOM)

Создайте вложенную таблицу в документе Word с помощью C#

Мы также можем создать новую таблицу внутри ячейки таблицы. Ниже приведены шаги по созданию вложенной таблицы в документе Word.

  1. Создайте объект класса Document.
  2. Создайте объект класса DocumentBuilder.
  3. Создайте таблицу с помощью метода StartTable() и получите ссылку на таблицу в объекте.
  4. Вставьте ячейку с помощью метода InsertCell() и получите ссылку на ячейку в объекте.
  5. Вставьте текст в ячейку с помощью метода DocumentBuilder.Write().
  6. При необходимости повторите вставку ячеек и текста в ячейки.
  7. Завершите таблицу, когда вставите все строки.
  8. Переместите элемент управления внутри нужной ячейки с помощью метода MoveTo(cell.FirstParagraph).
  9. Создайте еще одну таблицу, вставив ячейки, и завершите ее.
  10. Наконец, сохраните документ Word с помощью метода Save().

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

// В этом примере кода показано, как создать вложенную таблицу в документе Word с помощью C#.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Cell cell = builder.InsertCell();
builder.Writeln("Outer Table Cell 1");

builder.InsertCell();
builder.Writeln("Outer Table Cell 2");

// Этот вызов важен для создания вложенной таблицы внутри первой таблицы. 
// Без этого вызова ячейки, вставленные ниже, будут добавлены во внешнюю таблицу.
builder.EndTable();

// Перейдите к первой ячейке внешней таблицы.
builder.MoveTo(cell.FirstParagraph);

// Постройте внутреннюю таблицу.
builder.InsertCell();
builder.Writeln("Inner Table Cell 1");
builder.InsertCell();
builder.Writeln("Inner Table Cell 2");
builder.EndTable();

// Сохраните документ
doc.Save("NestedTable.docx");
Создайте вложенную таблицу в документе Word с помощью C#

Создайте вложенную таблицу в документе Word с помощью C#

Клонировать существующую таблицу в документе Word на C#

Мы можем клонировать существующую таблицу в документе Word, выполнив следующие действия:

  1. Загрузите существующий документ с таблицей, используя класс Document.
  2. Получите таблицу в объекте с помощью метода GetChild(NodeType.TABLE, int, boolean).
  3. Клонируйте таблицу с помощью метода Table.Clone(True).
  4. Вставьте клонированную таблицу с помощью метода Table.ParentNode.InsertAfter().
  5. Вставьте пустой абзац между таблицами, используя метод Table.ParentNode.InsertAfter(new Paragraph(Document), Table).
  6. Наконец, сохраните документ Word с помощью метода Save().

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

// В этом примере кода показано, как клонировать существующую таблицу в документе Word с помощью C#.
Document doc = new Document("Tables.docx");

Table table = (Table) doc.GetChild(NodeType.Table, 0, true);

// Клонируйте таблицу и вставьте ее в документ после оригинала.
Table tableClone = (Table) table.Clone(true);
table.ParentNode.InsertAfter(tableClone, table);

// Вставьте пустой абзац между двумя таблицами,
// или же они будут объединены в один при сохранении, это связано с проверкой документа.
table.ParentNode.InsertAfter(new Paragraph(doc), table);
            
doc.Save("CloneCompleteTable.docx");
Клонировать существующую таблицу в документе Word на C#

Клонировать существующую таблицу в документе Word на C#

Создать таблицу в документе Word из HTML

Мы также можем создать таблицу в документе Word, используя строку HTML, выполнив следующие действия:

  1. Создайте объект класса Document.
  2. Создайте объект класса DocumentBuilder.
  3. Вставьте строку HTML таблицы в документ с помощью метода DocumentBuilder.InsertHtml(String).
  4. Наконец, сохраните документ, используя метод Document.Save().

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

// В этом примере кода показано, как вставить таблицу HTML в документ Word с помощью C#.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Обратите внимание, что AutoFitSettings не применяется к таблицам, вставленным из HTML.
builder.InsertHtml("<table>" +
                   "<tr>" +
                   "<td>Row 1, Cell 1</td>" +
                   "<td>Row 1, Cell 2</td>" +
                   "</tr>" +
                   "<tr>" +
                   "<td>Row 2, Cell 2</td>" +
                   "<td>Row 2, Cell 2</td>" +
                   "</tr>" +
                   "</table>");

doc.Save("InsertTableFromHtml.docx");
Создать таблицу в документе Word из HTML

Создать таблицу в документе Word из HTML

Получите бесплатную лицензию API

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

Заключение

В этой статье мы узнали, как создавать таблицы в документах Word с помощью C#. Мы изучили различные методы программного создания таблиц с использованием C#. Мы также увидели, как динамически создавать вложенные таблицы или клонировать существующие таблицы в документах Word. Кроме того, вы можете узнать больше и изучить множество других возможностей библиотеки, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на нашем форуме бесплатной поддержки.

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