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

Давайте перейдемо до детального вивчення всіх цих тем:

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

По-перше, зауважте, що ви використовуватимете API Aspose.Words for C++ для вставлення таблиць у документ Word. Ви можете налаштувати API, завантаживши його з New Releases або через галерею 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);

// Тут ми можемо викликати EnsureMinimum, щоб створити для нас рядки та клітинки. Цей метод використовується
// Щоб переконатися, що вказаний вузол дійсний, у цьому випадку дійсна таблиця повинна мати принаймні один
// Рядок і одна клітинка, тому цей метод створює їх для нас.
// Натомість ми створимо рядок і таблицю самостійно. Це був би найкращий спосіб зробити це
// Якби ми, наприклад, створювали таблицю всередині алгоритму.
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 містить таблицю, яку потрібно вставити у ваші документи Word, наприклад 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>

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

Щоб вставити таблицю HTML у документ Word, виконайте наведені нижче дії.

  1. Ініціалізувати екземпляр класу Document.
  2. Передайте розмітку HTML за допомогою методу InsertHtml.
  3. Збережіть вихідний файл DOCX Word

Наведений нижче код виконує ці дії та показує, як створити таблицю в документі 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++

Найкраще в API Aspose.Words for C++ полягає в тому, що він пропонує різноманітні функції, які стають конкурентною перевагою 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 за допомогою C++

Ви можете вставити відформатовану таблицю в документ Word, виконавши наведені нижче дії.

  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, а також відформатовані та вкладені таблиці в документи Word (DOC/DOCX). Однак у разі будь-якої плутанини чи запиту ви можете зв’язатися з нами на безкоштовних форумах підтримки. Крім того, ви також можете звернутися до API References і Product Documentation для вашої люб’язної довідки.

Дивись також