Таблицы полезны для систематизации информации и рисунков. Мы часто вставляем таблицы в текстовые документы (DOCX/DOC) для отображения информации. В текстовом редакторе вы можете легко создавать таблицы с помощью C++. Вы можете просмотреть следующие примеры, чтобы научиться работать с таблицами в документах Word:

Давайте перейдем к подробному изучению всех этих тем:

Вставка таблиц в Word Documents API

Во-первых, обратите внимание, что вы будете использовать API Aspose.Words for C++ для вставки таблиц в текстовый документ. Вы можете настроить API, загрузив его из Новые выпуски или из галереи NuGet. После правильной настройки вы можете просто использовать методы, свойства и классы, предоставляемые API, чтобы можно было использовать несколько простых вызовов API для создания, редактирования или управления документами Microsoft Word, такими как файлы DOCX или DOC.

Вставка таблицы в документы Word с помощью C++

Вы можете вставить таблицу в документы Word, выполнив несколько простых шагов. Однако здесь важно отметить, что вы должны передать объект документа в конструктор каждого узла, чтобы все дочерние узлы принадлежали одному и тому же объекту. Вам необходимо выполнить шаги, перечисленные ниже:

  1. Инициализировать объект класса Document
  2. Создать объект Таблица
  3. Добавить таблицу в документ
  4. Создание строк и столбцов
  5. Применить AutoFit к ячейкам таблицы
  6. Сохранить выходной документ Word

Фрагмент кода ниже показывает, как вставить таблицу в документ Word (DOCX/DOC) с помощью C++:

// Путь к каталогу документов.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();

// Начнем с создания объекта таблицы. Обратите внимание, как мы должны передать объект документа
// К конструктору каждого узла. Это потому, что каждый узел, который мы создаем, должен принадлежать
// К какому-то документу.
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);

// Добавьте таблицу в документ.
doc->get_FirstSection()->get_Body()->AppendChild(table);

// Здесь мы могли бы вызвать SureMinimum, чтобы создать для нас строки и ячейки. Этот метод используется
// Чтобы убедиться, что указанный узел действителен, в этом случае действительная таблица должна иметь хотя бы один
// Строка и одна ячейка, поэтому этот метод создает их за нас.
// Вместо этого мы сами создадим строку и таблицу. Это был бы лучший способ сделать это
// Например, если бы мы создавали таблицу внутри алгоритма.
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);

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

// Создайте ячейку и добавьте ее в строку
System::SharedPtr<Cell> cell = System::MakeObject<Cell>(doc);
cell->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_LightBlue());
cell->get_CellFormat()->set_Width(80);

// Добавьте абзац в ячейку, а также новый запуск с текстом.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));

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

// Затем мы повторили бы процесс для других ячеек и строк в таблице.
// Мы также можем ускорить работу, клонируя существующие ячейки и строки.
row->AppendChild((System::StaticCast<Node>(cell))->Clone(false));
row->get_LastCell()->AppendChild(System::MakeObject<Paragraph>(doc));
row->get_LastCell()->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 2 Text"));
System::String outputPath = outputDataDir + u"InsertTableDirectly.doc";

// Сохраните документ на диск.
doc->Save(outputPath);

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

Возможно, файл HTML содержит таблицу, которую вам нужно вставить в текстовые документы, такие как DOCX, DOC и т. д. Или вам может потребоваться скопировать таблицу с веб-сайта. Таким образом, вместо того, чтобы создавать и проектировать таблицу с нуля, вы можете легко преобразовать HTML-разметку в виде таблицы в документ Word. Например, вы можете добавить таблицу в документ Word, используя следующую строку HTML:

<table><tr><td>Row 1, Cell 1</td><td>Row 1, Cell 2</td></tr><tr><td>Row 2, Cell 1</td><td>Row 2, Cell 2</td></tr></table>

Мы сохранили содержание простым, чтобы можно было продемонстрировать поддержку тега table с помощью простого, но важного варианта использования. Кроме того, здесь важно отметить, что автоподбор нельзя применять к таблицам, созданным из HTML.

Давайте выполним следующие шаги для вставки таблицы HTML в документ Word:

  1. Инициализировать экземпляр класса Document
  2. Передайте HTML-разметку с помощью метода InsertHtml.
  3. Сохранить выходной файл Word DOCX

Код ниже следует этим шагам и показывает, как создать таблицу в документе Word с помощью HTML с помощью C++:

// Путь к каталогу документов.
System::String outputDataDir = dataDir;
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

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

System::String outputPath = outputDataDir + u"InsertTableFromHtml.doc";
// Сохраните документ на диск.
doc->Save(outputPath);

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

Вставить таблицу в Word

Вставить таблицу с помощью Document Builder в C++

Самое лучшее в Aspose.Words for C++ API — это то, что он предлагает множество функций, которые становятся конкурентным преимуществом для API и выделяют его среди других вариантов. Точно так же функция вставки таблицы с помощью конструктора документов представляет собой еще один подход к добавлению таблиц в документы Word (DOC/DOCX). Итак, давайте рассмотрим детали с трех разных точек зрения:

1) Вставьте простую таблицу в DOCX с помощью Document Builder, используя C++

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

  1. Создать Документ Объект
  2. Вызовите метод StartTable() и вставьте ячейки
  3. Добавьте строку и ячейки
  4. Сохранить выходной файл DOCX

Кроме того, фрагмент кода ниже показывает, как вставить простую таблицу в файл DOCX с помощью C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Мы вызываем этот метод, чтобы начать построение таблицы.
builder->StartTable();
builder->InsertCell();
builder->Write(u"Row 1, Cell 1 Content.");

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

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

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

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

// Сигнал о том, что мы закончили построение таблицы.
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.SimpleTable.doc";

// Сохраните документ на диск.
doc->Save(outputPath);

2) Вставьте отформатированную таблицу в DOCX с помощью Document Builder с использованием С++

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

  1. Инициализировать экземпляр класса Document
  2. Сделать строку заголовка
  3. Установите отступы и функции для форматирования
  4. Сбросить форматирование шрифта
  5. Сохранить выходной файл Word DOCX

Ниже фрагмент кода создает форматированную таблицу в файле DOCX с использованием C++:

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
System::SharedPtr<Table> table = builder->StartTable();

// Сделайте строку заголовка.
builder->InsertCell();

// Установите левый отступ для таблицы. Форматирование таблицы должно применяться после
// В таблице присутствует хотя бы одна строка.
table->set_LeftIndent(20.0);

// Установите высоту и определите правило высоты для строки заголовка.
builder->get_RowFormat()->set_Height(40.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::AtLeast);

// Некоторые специальные функции для строки заголовка.
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::FromArgb(198, 217, 241));
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
builder->get_Font()->set_Size(16);
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Bold(true);
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Header Row,\n Cell 1");

// Нам не нужно указывать ширину этой ячейки, потому что она унаследована от предыдущей ячейки.
builder->InsertCell();
builder->Write(u"Header Row,\n Cell 2");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Header Row,\n Cell 3");
builder->EndRow();

// Задайте функции для других строк и ячеек.
builder->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_White());
builder->get_CellFormat()->set_Width(100.0);
builder->get_CellFormat()->set_VerticalAlignment(CellVerticalAlignment::Center);

// Сбросить высоту и определить другое правило высоты для тела таблицы
builder->get_RowFormat()->set_Height(30.0);
builder->get_RowFormat()->set_HeightRule(HeightRule::Auto);
builder->InsertCell();

// Сбросить форматирование шрифта.
builder->get_Font()->set_Size(12);
builder->get_Font()->set_Bold(false);

// Постройте другие ячейки.
builder->Write(u"Row 1, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 1, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 1, Cell 3 Content");
builder->EndRow();
builder->InsertCell();
builder->get_CellFormat()->set_Width(100.0);
builder->Write(u"Row 2, Cell 1 Content");
builder->InsertCell();
builder->Write(u"Row 2, Cell 2 Content");
builder->InsertCell();
builder->get_CellFormat()->set_Width(200.0);
builder->Write(u"Row 2, Cell 3 Content.");
builder->EndRow();
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.FormattedTable.doc";

// Сохраните документ на диск.
doc->Save(outputPath);

3) Вставьте вложенную таблицу в DOCX с помощью Document Builder, используя C++

Иногда нам нужна еще одна таблица внутри существующей таблицы. Например, ячейка в некоторой строке или столбце таблицы может содержать подтаблицу для подкатегории или какое-либо другое поле. В таких сценариях полезны вложенные таблицы, которые можно добавить, выполнив следующие действия:

  1. Создайте внешнюю таблицу Table, а затем вызовите метод EndTable.
  2. Построить внутреннюю таблицу внутри ячейки внешней таблицы
  3. Сохранить выходной документ Word

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

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Постройте внешнюю таблицу.
System::SharedPtr<Cell> cell = builder->InsertCell();
builder->Writeln(u"Outer Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Outer Table Cell 2");

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

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

// Постройте внутреннюю таблицу.
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 1");
builder->InsertCell();
builder->Writeln(u"Inner Table Cell 2");
builder->EndTable();
System::String outputPath = outputDataDir + u"InsertTableUsingDocumentBuilder.NestedTable.doc";

// Сохраните документ на диск.
doc->Save(outputPath);

Вывод

Подводя итог, мы научились вставлять разные таблицы в документы Word, используя разные подходы. Вы можете вставить простую таблицу или со строкой HTML, а также отформатированные и вложенные таблицы в текстовые документы (DOC/DOCX). Тем не менее, если у вас возникнут вопросы или возникнут вопросы, вы можете обратиться к нам на бесплатных форумах поддержки. Кроме того, вы также можете обратиться к Справочникам по API и Документации по продукту.

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