Создание документов Word на C++

Aspose.Words — это многофункциональный набор API-интерфейсов, который позволяет программно создавать, редактировать и преобразовывать документы MS Word. Он предоставляет широкий спектр основных, а также расширенных функций для работы с текстовыми документами. В этой статье вы узнаете, как использовать Aspose.Words for C++ и создавать документы MS Word с нуля с помощью C++. Пошаговое руководство, а также примеры кода помогут вам узнать, как вставлять текст, изображения, таблицы, списки и другие элементы в документы Word.

C++ API для создания документов MS Word

Aspose.Words for C++ позволяет генерировать текстовые документы и управлять ими в приложениях C++ без MS Word. Вы можете загрузить API или установить его в своих приложениях C++ с помощью NuGet с помощью следующей команды.

PM> Install-Package Aspose.Words.Cpp

Создание документов MS Word с помощью C++

Давайте сначала создадим простой документ Word и сохраним его как файл .doc или .docx. Для этого вам необходимо выполнить следующие шаги:

  • Создайте пустой документ Word, используя класс Document.
  • Создайте объект класса DocumentBuilder, чтобы добавить содержимое в документ.
  • Добавьте текст, используя метод DocumentBuilder->Writeln().
  • Сохраните документ как файл .doc или .docx, используя метод Документ->Сохранить().

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

// Инициализировать документ.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// Используйте конструктор документов, чтобы добавить содержимое в документ.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Добавить текст
builder->Writeln(u"Hello World!"); 
// Сохраните документ на диск.
doc->Save(u"document.docx");

Редактировать или обновлять существующий документ Word DOC/DOCX с помощью C++

Вы также можете редактировать существующие документы Word, используя Aspose.Words для C++. Для этого API использует объектную модель документа (DOM) для представления документа в памяти. DOM позволяет получить доступ к элементам документа Word, таким как верхний и нижний колонтитулы, абзацы, таблицы и т. д. Подробнее о DOM здесь.

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

  • Загрузите документ Word, используя класс Document.
  • Создайте объект класса DocumentBuilder для доступа к содержимому.
  • Получите доступ к нужному абзацу (или любому другому элементу) и обновите содержимое.
  • Сохраните обновленный документ методом Документ->Сохранить().

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

// Инициализировать документ.
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"document.docx");
// Используйте конструктор документов, чтобы добавить содержимое в документ.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Получить раздел
auto section = doc->get_Sections()->idx_get(0);
// Получить тело
auto body = section->get_Body();
// Получить первый абзац
auto para = body->get_FirstParagraph();
// Обновить текст
auto run = para->get_Runs()->idx_get(0);
run->set_Text(u"This is the updated text."); 
// Сохраните документ на диск.
doc->Save(u"updated_document.docx");

Вставка изображений в документ Word с помощью C++

Ниже приведены шаги для вставки изображения в документы MS Word с использованием C++.

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

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc); 
// Добавьте логотип в верхний левый угол страницы. Изображение размещается перед всем остальным текстом.
System::SharedPtr<Shape> shape = builder->InsertImage( u"Aspose Logo.png", RelativeHorizontalPosition::Page, 60.0, RelativeVerticalPosition::Page, 60.0, -1.0, -1.0, WrapType::None);
doc->Save(u"document_with_image.docx");

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

Таблица является важным элементом документов Word для хранения данных в виде строк и столбцов. Чтобы создать таблицу в документах Word, выполните следующие действия.

  • Создайте новый документ Word, используя класс Document.
  • Создайте объект класса Table.
  • Вставить таблицу в документ с помощью метода Document->getFirstSection()->getBody()->AppendChild().
  • Создайте новую строку, используя класс Row.
  • Вставить строку в таблицу методом Table->AppendChild(row).
  • Создайте новую Cell и вставьте в нее текст с помощью метода Cell->getFirstParagraph()->AppendChild().
  • Вставьте ячейку в строку, используя метод Row->AppendChild().
  • Повторите процесс для добавления нескольких строк.
  • Сохраните документ методом Документ->Сохранить().

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

System::SharedPtr<Document> doc = System::MakeObject<Document>(); 
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// Добавьте таблицу в документ.
doc->get_FirstSection()->get_Body()->AppendChild(table); 
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"));
// Сохраните документ на диск.
doc->Save(u"document_with_table.docx");

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

И последнее, но не менее важное: создание списка в документах Word. Ниже приведены шаги для создания маркированного списка.

  • Создайте новый документ Word или загрузите существующий с помощью класса Document.
  • Определите новый объект DocumentBuilder и инициализируйте его с помощью объекта Document.
  • Создайте список, используя метод DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListTemplate::NumberArabicDot)) .
  • Заполните список и установите уровень списка.
  • Сохраните документ в виде файла.

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

System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Создайте нумерованный список на основе одного из шаблонов списка Microsoft Word и
// применить его к текущему абзацу в конструкторе документов.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::NumberArabicDot));
// В этом списке 9 уровней, давайте попробуем их все.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Создайте маркированный список на основе одного из шаблонов списка Microsoft Word.
// and применить его к текущему абзацу в конструкторе документов.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::BulletDiamonds));
// В этом списке 9 уровней, давайте попробуем их все.
for (int32_t i = 0; i < 9; i++)
{
	builder->get_ListFormat()->set_ListLevelNumber(i);
	builder->Writeln(System::String(u"Level ") + i);
}
// Это способ остановить форматирование списка. 
builder->get_ListFormat()->set_List(nullptr); 
// Сохраните документ на диск.
builder->get_Document()->Save(u"document_with_list.docx");

Вывод

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

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