Створення документів 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 за допомогою методу Document->Save().

У наведеному нижче прикладі коду показано, як створити документ 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 for C++. Для цього API використовує об’єктну модель документа (DOM) для представлення документа в пам’яті. DOM дозволяє отримати доступ до елементів документа Word, таких як верхній/нижній колонтитул, абзаци, таблиці тощо. Дізнайтеся більше про DOM тут.

Щоб оновити документ Word, просто завантажте його за допомогою класу Document і обробіть за бажанням. Нижче наведено кроки для редагування та оновлення наявного документа Word.

  • Завантажте документ Word за допомогою класу Document.
  • Створіть об’єкт класу DocumentBuilder для доступу до вмісту.
  • Перейдіть до потрібного абзацу (або будь-якого іншого елемента) і оновіть вміст.
  • Збережіть оновлений документ за допомогою методу Document->Save().

У наведеному нижче прикладі коду показано, як оновити текст абзацу в документі 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().
  • Повторіть процес для додавання кількох рядків.
  • Збережіть документ за допомогою методу Document->Save().

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

Дивись також