在 C++ 中创建 Word 文档

Aspose.Words 是功能丰富的 API 集合,可让您以编程方式创建、编辑和转换 MS Word 文档。它为操作文字处理文档提供了广泛的基本和高级功能。在本文中,您将学习如何使用 Aspose.Words for C++ 并使用 C++ 从头开始创建 MS Word 文档。分步指南和代码示例将让您了解如何在 Word 文档中插入文本、图像、表格、列表和其他元素。

用于创建 MS Word 文档的 C++ API

Aspose.Words for C++ 让您无需 MS Word 即可在 C++ 应用程序中生成和操作文字处理文档。您可以通过以下命令使用 NuGet 下载 API 或将其安装在您的 C++ 应用程序中。

PM> Install-Package Aspose.Words.Cpp

使用 C++ 创建 MS Word 文档

让我们首先创建一个简单的 Word 文档并将其保存为 .doc 或 .docx 文件。为此,您需要执行以下步骤:

以下代码示例展示了如何使用 C++ 创建 Word DOCX 文档。

// 初始化一个文档。
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");

使用 C++ 编辑或更新现有 Word DOC/DOCX

您还可以使用 Aspose.Words for C++ 编辑现有的 Word 文档。为此,API 使用文档对象模型 (DOM) 来表示文档的内存中。 DOM 允许您访问 Word 文档的元素,例如页眉/页脚、段落、表格等。阅读有关 DOM 的更多信息 此处

要更新 Word 文档,只需使用 Document 类加载它并根据需要进行处理。以下是编辑和更新现有 Word 文档的步骤。

  • 使用 Document 类加载 Word 文档。
  • 创建一个 DocumentBuilder 类的对象来访问内容。
  • 访问所需的段落(或任何其他元素)并更新内容。
  • 使用 Document->Save() 方法保存更新的文档。

以下代码示例演示如何使用 C++ 更新 Word 文档中的段落文本。

// 初始化一个文档。
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");

使用 C++ 在 Word 文档中插入图像

以下是使用 C++ 在 MS Word 文档中插入图像的步骤。

以下代码示例演示如何使用 C++ 将图像插入 Word 文档。

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");

使用 C++ 在 Word 文档中插入表格

表格是 Word 文档中以行和列的形式保存数据的重要元素。为了在 Word 文档中生成表格,请按照以下步骤操作。

  • 使用 Document 类创建一个新的 Word 文档。
  • 创建一个 Table 类的对象。
  • 使用 Document->getFirstSection()->getBody()->AppendChild() 方法将表格插入到文档中。
  • 使用 Row 类创建一个新行。
  • 使用 Table->AppendChild(row) 方法将行插入表中。
  • 创建并新建 Cell 并使用 Cell->getFirstParagraph()->AppendChild() 方法将文本插入其中。
  • 使用 Row->AppendChild() 方法将单元格插入行。
  • 重复添加多行的过程。
  • 使用 Document->Save() 方法保存文档。

以下代码示例展示了如何使用 C++ 在 Word 文档中插入表格。

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");

使用 C++ 在 Word 文档中添加列表

最后但并非最不重要的一点是,在 Word 文档中创建一个列表。以下是创建项目符号列表的步骤。

  • 使用 Document 类创建一个新的 Word 文档或加载现有的文档。
  • 定义一个新的 DocumentBuilder 对象并使用 Document 对象对其进行初始化。
  • 使用 DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListTemplate::NumberArabicDot)) 方法创建列表。
  • 填充列表并设置列表级别。
  • 将文档另存为文件。

以下代码示例演示如何使用 C++ 在 Word 文档中创建列表。

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");

结论

在本文中,您了解了如何使用 C++ 从头开始创建 MS Word 文档。此外,您还学习了如何在新的或现有的 Word 文档中插入文本、图像、表格和列表等元素。您可以使用 文档 探索更多关于 API 高级特性的信息。

也可以看看