表格有助于组织信息和图形。我们经常在word文档(DOCX/DOC)中插入表格来展示信息。在文字处理应用程序中,您可以使用 C++ 轻松创建表格。您可以通过以下示例了解如何在 Word 文档中使用表格:

让我们继续详细探讨所有这些主题:

在 Word 文档 API 中插入表格

首先,请注意您将使用 Aspose.Words for C++ API 在 word 文档中插入表格。您可以通过从 New Releases 或通过 NuGet 库下载 API 来配置 API。正确配置后,您可以简单地利用 API 公开的方法、属性和类,以便使用一些简单的 API 调用来创建、编辑或操作 Microsoft Word 文档,如 DOCX 或 DOC 文件。

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

您可以通过几个简单的步骤在 Word 文档中插入表格。但是,这里需要注意的是,必须将文档对象传递给每个节点的构造函数,以便所有子节点都属于同一个对象。您需要按照下列步骤操作:

  1. 初始化 Document 类的对象
  2. 创建 Table 对象
  3. 将表格添加到文档
  4. 创建行和列
  5. 在表格单元格上应用 AutoFit
  6. 保存输出 Word 文档

下面的代码片段显示了如何使用 C++ 在 Word 文档 (DOCX/DOC) 中插入表格:

// 文档目录的路径。
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);

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

HTML 文件可能包含您需要插入到 Word 文档(如 DOCX、DOC 等)中的表格。或者您可能需要从网站复制表格。因此,您无需从头开始创建和设计表格,而是可以轻松地将 HTML 标记作为表格解析为 Word 文档。例如,您可以使用以下 HTML 字符串将表格添加到 Word 文档中:

<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>

我们保持内容简单,以便可以通过基本但重要的用例来演示对表格标签的支持。此外,重要的是要注意 AutoFit 不能应用于从 HTML 创建的表格。

让我们按照以下步骤在 Word 文档中插入 HTML 表格:

  1. 初始化 Document 类的一个实例
  2. 使用 InsertHtml 方法传递 HTML 标记
  3. 保存输出 DOCX word 文件

下面的代码遵循这些步骤,并展示了如何使用 C++ 在 Word 文档中使用 HTML 创建表格:

// 文档目录的路径。
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);

您会注意到这种方法比我们上面探讨的方法要简单一些。原因是,您不需要为行、列或单元格逐个添加每个节点,因为 HTML 字符串中的 Table 标记包含所有信息。以下是添加到 Word 文档中的这个简单 HTML 表格的屏幕截图:

在 Word 中插入表格

在 C++ 中使用文档生成器插入表格

Aspose.Words for C++ API 的最佳之处在于它提供了多种功能,这些功能成为 API 的竞争优势,并使其在其他选项中脱颖而出。同样,使用文档构建器插入表格的功能是在 Word 文档(DOC/DOCX)中添加表格的另一种方法。那么让我们从三个不同的角度来探讨细节:

1) 使用 C++ 使用 Document Builder 在 DOCX 中插入简单表格

要使用 Document builder 在 Word 文档中添加简单表格,您需要按照以下步骤操作:

  1. 创建 文档 对象
  2. 调用 StartTable() 方法并插入单元格
  3. 添加行和单元格
  4. 保存输出 DOCX 文件

此外,下面的代码片段展示了如何使用 C++ 在 DOCX 文件中插入简单表格:

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) 使用 C++ 使用 Document Builder 在 DOCX 中插入格式化表格

您可以通过以下步骤将格式化表格插入到 Word 文档中:

  1. 初始化 Document 类的实例
  2. 制作标题行
  3. 为格式设置缩进和功能
  4. 重置字体格式
  5. 保存输出 Word DOCX 文件

下面的代码片段使用 C++ 在 DOCX 文件中创建格式化表:

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) 使用 C++ 使用 Document Builder 在 DOCX 中插入嵌套表

有时我们需要现有表中的另一个表。例如,表格的某些行或列中的单元格可以包含用于子类别或某些其他字段的子表。在这种情况下,嵌套表很有帮助,可以按照以下步骤添加:

  1. 构建外部 Table 然后调用 EndTable 方法
  2. 在外部表格的单元格内构建内部表格
  3. 保存输出word文档

以下代码片段展示了如何使用 C++ 在 Word 文档中插入嵌套表格:

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 参考产品文档 以供参考。

也可以看看