表格是组织和呈现数据的强大工具。它将数据排列成行和列,使作者更容易阐述不同数据类别之间的关系,也便于读者理解和分析复杂的数据。在本文中,您将学习如何使用 spire.doc for c 以编程方式在 word 文档中创建表格。
安装 spire.doc for c
有两种方法可以将 spire.doc for c 集成到您的应用程序中。一种方法是通过 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 nuget 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
在 word 中创建表格
spire.doc for c 提供了 section->addtable() 方法来将表格添加到 word 文档的某个节。详细步骤如下:
- 初始化 document 类的一个实例。
- 使用 document->addsection() 方法向文档添加一个节。
- 定义表头行和剩余行的数据,分别存储在一维向量和二维向量中。
- 使用 section->addtable() 方法将表格添加到该节。
- 使用 table->resetcells(int, int) 方法指定表格中的行数和列数。
- 将一维向量中的数据添加到标题行并设置格式。
- 将二维向量中的数据添加到剩余的行并设置格式。
- 使用 document->savetofile() 方法保存结果文档。
- c
#include "spire.doc.o.h"
using namespace spire::doc;
using namespace spire::common;
using namespace std;
int main()
{
//初始化 document 类的一个实例
document* doc = new document();
//在文档中添加一个节
section* section = doc->addsection();
//设置节的页边距
section->getpagesetup()->getmargins()->setall(72);
//定义标题行的数据
vector header = { l"国家", l"首都", l"大陆", l"国土面积", l"人口数量" };
//定义剩余行的数据
vector> data =
{
{l"阿根廷", l"布宜诺斯艾利斯", l"南美", l"2777815", l"32300003"},
{l"玻利维亚", l"拉巴斯", l"南美", l"1098575", l"7300000"},
{l"巴西", l"巴西利亚", l"南美", l"8511196", l"150400000"},
{l"加拿大", l"渥太华", l"北美", l"9976147", l"26500000"},
{l"智利", l"圣地亚哥", l"南美", l"756943", l"13200000"},
{l"哥伦比亚", l"波哥大", l"南美", l"1138907", l"33000000"},
{l"古巴", l"哈瓦那", l"北美", l"114524", l"10600000"},
{l"厄瓜多尔", l"基多", l"南美", l"455502", l"10600000"},
{l"萨尔瓦多", l"圣萨尔瓦多", l"北美", l"20865", l"5300000"},
{l"圭亚那", l"乔治城", l"南美", l"214969", l"800000"},
{l"牙买加", l"金士顿", l"北美", l"11424", l"2500000"},
{l"墨西哥", l"墨西哥城", l"北美", l"1967180", l"88600000"},
{l"尼加拉瓜", l"马那瓜", l"北美", l"139000", l"3900000"},
{l"巴拉圭", l"亚松森", l"南美", l"406576", l"4660000"},
{l"秘鲁", l"利马", l"南美", l"1285215", l"21600000"},
{l"美国", l"华盛顿", l"北美", l"9363130", l"249200000"},
{l"乌拉圭", l"蒙得维的亚", l"南美", l"176140", l"3002000"},
{l"委内瑞拉", l"加拉加斯", l"南美", l"912047", l"19700000"}
};
//向该部节添加表格
table* table = section->addtable(true);
//指定表格的行数和列数
table->resetcells(data.size() 1, header.size());
//将第一行设置为标题行
tablerow* row = table->getrows()->getitem(0);
row->setisheader(true);
//设置标题行的高度和背景颜色
row->setheight(20);
row->setheighttype(tablerowheighttype::exactly);
row->getrowformat()->setbackcolor(color::fromargb(142, 170, 219));
//将数据添加到标题行并设置格式
for (int i = 0; i < header.size(); i )
{
//添加一个段落
paragraph* p1 = row->getcells()->getitem(i)->addparagraph();
//设置对齐方式
p1->getformat()->sethorizontalalignment(horizontalalignment::center);
row->getcells()->getitem(i)->getcellformat()->setverticalalignment(verticalalignment::middle);
//添加数据
textrange* tr1 = p1->appendtext(header[i].c_str());
//设置数据格式
tr1->getcharacterformat()->setfontname(l"宋体");
tr1->getcharacterformat()->setfontsize(12);
tr1->getcharacterformat()->setbold(true);
}
//向剩余行添加数据并设置格式
for (int r = 0; r < data.size(); r )
{
//设置剩余行的高度
tablerow* datarow = table->getrows()->getitem(r 1);
datarow->setheight(20);
datarow->setheighttype(tablerowheighttype::exactly);
for (int c = 0; c < data[r].size(); c )
{
//添加一个段落
paragraph* p2 = datarow->getcells()->getitem(c)->addparagraph();
//设置对齐方式
datarow->getcells()->getitem(c)->getcellformat()->setverticalalignment(verticalalignment::middle);
//添加数据
textrange* tr2 = p2->appendtext(data[r][c].c_str());
//设置数据格式
tr2->getcharacterformat()->setfontname(l"宋体");
tr2->getcharacterformat()->setfontsize(11);
}
}
//保存结果文档
doc->savetofile(l"创建表格.docx", fileformat::docx2013);
doc->close();
delete doc;
}
在 word 中创建嵌套表格
spire.doc for c 提供了 tablecell->addtable() 方法来将嵌套表格添加到特定的表格单元格。详细步骤如下:
- 初始化 document 类的一个实例。
- 使用 document->addsection() 方法向文档添加一个节。
- 使用 section.addtable() 方法将表格添加到该节。
- 使用 table->resetcells(int, int) 方法指定表格中的行数和列数。
- 获取表格的行并将数据添加到每行的单元格中。
- 使用 tablecell->addtable() 方法将嵌套表格添加到特定表格单元格。
- 指定嵌套表格中的行数和列数。
- 获取嵌套表格的行并将数据添加到每行的单元格中。
- 使用 document->savetofile() 方法保存结果文档。
- c
#include "spire.doc.o.h"
using namespace spire::doc;
int main()
{
//初始化 document 类的一个实例
document* doc = new document();
//在文档中添加一个节
section* section = doc->addsection();
//设置节的页边距
section->getpagesetup()->getmargins()->setall(72);
//向节中添加表格
table* table = section->addtable(true);
//设置表中的行数和列数
table->resetcells(2, 2);
//根据窗口自动调整表格宽度
table->autofit(autofitbehaviortype::autofittowindow);
//获取表行
tablerow* row1 = table->getrows()->getitem(0);
tablerow* row2 = table->getrows()->getitem(1);
//将数据添加到表的单元格
tablecell* cell1 = row1->getcells()->getitem(0);
textrange* tr = cell1->addparagraph()->appendtext(l"产品");
tr->getcharacterformat()->setfontsize(13);
tr->getcharacterformat()->setbold(true);
tablecell* cell2 = row1->getcells()->getitem(1);
tr = cell2->addparagraph()->appendtext(l"产品说明");
tr->getcharacterformat()->setfontsize(13);
tr->getcharacterformat()->setbold(true);
tablecell* cell3 = row2->getcells()->getitem(0);
cell3->addparagraph()->appendtext(l"spire.doc for c ");
tablecell* cell4 = row2->getcells()->getitem(1);
cell4->addparagraph()->appendtext(l"spire.doc for c 是一款专门对 word 文档进行操作的 c 类库。"
l"这款控件具有快速和高质量的性能,"
l"主要功能在于帮助开发人员轻松快捷高效地"
l"创建、编辑、转换、及比较microsoft word 文档。");
//将嵌套表添加到第四个单元格
table* nestedtable = cell4->addtable(true);
//set the number of rows and columns in the nested table
nestedtable->resetcells(3, 2);
//根据内容自动调整表格宽度
nestedtable->autofit(autofitbehaviortype::autofittocontents);
//获取表行
tablerow* nestedrow1 = nestedtable->getrows()->getitem(0);
tablerow* nestedrow2 = nestedtable->getrows()->getitem(1);
tablerow* nestedrow3 = nestedtable->getrows()->getitem(2);
//将数据添加到嵌套表的单元格
tablecell* nestedcell1 = nestedrow1->getcells()->getitem(0);
tr = nestedcell1->addparagraph()->appendtext(l"商品");
tr->getcharacterformat()->setbold(true);
tablecell* nestedcell2 = nestedrow1->getcells()->getitem(1);
tr = nestedcell2->addparagraph()->appendtext(l"价格");
tr->getcharacterformat()->setbold(true);
tablecell* nestedcell3 = nestedrow2->getcells()->getitem(0);
nestedcell3->addparagraph()->appendtext(l"developer subscription");
tablecell* nestedcell4 = nestedrow2->getcells()->getitem(1);
nestedcell4->addparagraph()->appendtext(l"$999");
tablecell* nestedcell5 = nestedrow3->getcells()->getitem(0);
nestedcell5->addparagraph()->appendtext(l"developer oem subscription");
tablecell* nestedcell6 = nestedrow3->getcells()->getitem(1);
nestedcell6->addparagraph()->appendtext(l"$2999");
//保存结果文档
doc->savetofile(l"创建嵌套表格.docx", fileformat::docx2013);
doc->close();
delete doc;
}
申请临时 license
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用javascript。获取有效期 30 天的临时许可证。