Aspose.Words 是一個功能豐富的 API 集合,可讓您以編程方式創建、編輯和轉換 MS Word 文檔。它為操作文字處理文檔提供了廣泛的基本和高級功能。在本文中,您將學習如何使用 Aspose.Words for C++ 並使用 C++ 從頭開始創建 MS Word 文檔。分步指南和代碼示例將讓您了解如何在 Word 文檔中插入文本、圖像、表格、列表和其他元素。
- C++ 字處理 API
- 使用 C++ 創建 MS Word 文檔
- 使用 C++ 編輯或更新現有的 MS Word DOC/DOCX
- 使用 C++ 在 Word 文檔中插入圖像
- 使用 C++ 在 Word 文檔中插入表格
- 使用 C++ 在 Word 文檔中添加列表
用於創建 MS Word 文檔的 C++ API
Aspose.Words for C++ 允許您在 C++ 應用程序中生成和操作文字處理文檔,而無需 MS Word。您可以 下載 API 或使用 NuGet 和以下命令將其安裝在您的 C++ 應用程序中。
PM> Install-Package Aspose.Words.Cpp
使用 C++ 創建 MS Word 文檔
讓我們首先創建一個簡單的 Word 文檔並將其另存為 .doc 或 .docx 文件。為此,您需要執行以下步驟:
- 使用 Document 類創建一個空白 Word 文檔。
- 創建 DocumentBuilder 類的對像以將內容添加到文檔中。
- 使用 DocumentBuilder->Writeln() 方法添加文本。
- 使用 Document->Save() 方法將文檔保存為 .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 文檔中插入圖像的步驟。
- 使用 Document 類創建一個新的 Word 文檔或加載現有文檔。
- 創建一個 DocumentBuilder 對象並使用 Document 對像對其進行初始化。
- 使用 DocumentBuilder->InsertImage(String fileName, RelativeHorizontalPosition horzPos, double left, RelativeVerticalPosition vertPos, double top, double width, double height, WrapType wrapType) 方法插入圖像。
- 將文檔另存為 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 高級功能的更多信息。