Table、TableRow 和 TableCell¶
featherdoc::Table 用于编辑 Word 表格结构和表格级元数据。
featherdoc::TableRow 用于编辑行元数据和可见单元格文本。
featherdoc::TableCell 用于编辑单元格内容、宽度、合并状态、边框、
底色、边距和内部段落。
索引、单位和返回语义¶
表格 API 使用从 0 开始的索引。row_index 表示可见表格行,
cell_index 表示该行内的可见单元格,grid_column 表示考虑跨列后的
Word 网格列。宽度、缩进、边距和间距都使用 twips。返回
std::optional<T> 的方法在目标无法解析时返回空值;返回 bool 的方法
表示表格 XML 是否成功修改。
常用任务入口¶
常见表格工作流可以从这些入口开始:
创建表格:调用
Document::append_table(...)或TemplatePart::append_table(...)。安全定位单元格:使用
find_row(...)、find_cell(...)或find_cell_by_grid_column(...),并检查返回的std::optional。填充矩形数据区域:使用
set_row_texts(...)、set_rows_texts(...)或set_cell_block_texts(...)。固定布局:设置
table_layout_mode::fixed、set_width_twips(...)和set_column_width_twips(...)。设置行和单元格细节:用
TableRow管重复表头和行高,用TableCell管合并、底色、边距、边框和内部段落。
成功/失败语义¶
返回形态 |
成功含义 |
失败或无变化含义 |
|---|---|---|
|
包含已经存在的可见行句柄。 |
行索引超出当前表格时为空。 |
|
通过可见单元格或网格列解析后,包含单元格句柄。 |
行、可见单元格或网格列无法解析时为空。 |
|
|
|
|
返回句柄指向插入或追加的表格节点。 |
后续修改应继续使用该返回句柄。 |
|
包含已有的表格、行或单元格元数据。 |
空值表示该元数据不存在或无法解析。 |
短示例¶
auto table = doc.body_template().append_table(2, 2);
table.set_row_texts(0, {"Name", "Status"});
table.set_row_texts(1, {"Ada", "Approved"});
if (auto cell = table.find_cell(1, 1)) {
cell->set_fill_color("D9EAF7");
}
类型化签名导读¶
签名 |
参数 |
返回语义 |
|---|---|---|
|
|
目标行不存在时返回空值。 |
|
|
行或单元格无法解析时返回空值。 |
|
|
网格列无法映射到可见单元格时返回空值。 |
|
|
目标单元格文本成功替换时返回 |
|
|
所有目标单元格成功更新时返回 |
|
|
目标矩形块成功更新时返回 |
|
|
网格列宽成功更新时返回 |
|
|
边框定义成功写入时返回 |
|
|
所有提供的单元格成功更新时返回 |
|
|
横向合并元数据成功应用时返回 |
|
|
纵向合并元数据成功应用时返回 |
|
|
单元格边距成功更新时返回 |
表格结构与查找¶
方法 |
返回值 |
用途 |
|---|---|---|
|
|
将表格迭代器推进到下一个表格。 |
|
|
检查表格迭代器是否还能继续推进。 |
|
|
访问当前表格的行迭代器。 |
|
|
按从 0 开始的行索引查找行。 |
|
|
按行索引和可见单元格索引查找单元格。 |
|
|
按解析后的网格列查找单元格。 |
|
|
替换可见单元格文本。 |
|
|
按解析后的网格列替换单元格文本。 |
|
|
替换某一行的可见单元格文本。 |
|
|
从指定行开始替换矩形行块。 |
|
|
从指定行和单元格开始替换矩形单元格块。 |
|
|
追加一行,并指定单元格数量。 |
表格布局、样式与边框¶
方法 |
返回值 |
用途 |
|---|---|---|
|
|
读取表格宽度。 |
|
|
设置表格宽度,单位是 twips。 |
|
|
读取某一网格列宽度。 |
|
|
设置某一网格列宽度。 |
|
|
读取自动适应或固定布局模式。 |
|
|
设置表格布局模式。 |
|
|
读取表格对齐方式。 |
|
|
设置表格对齐方式。 |
|
|
读取表格缩进。 |
|
|
设置表格缩进。 |
|
|
读取单元格间距。 |
|
|
设置单元格间距。 |
|
|
读取浮动表格位置元数据。 |
|
|
设置浮动表格位置元数据。 |
|
|
读取表格样式 ID。 |
|
|
设置表格样式 ID。 |
|
|
读取表格样式外观标记。 |
|
|
设置表格样式外观标记。 |
|
|
读取某个表格边框。 |
|
|
设置某个表格边框。 |
TableRow¶
方法 |
返回值 |
用途 |
|---|---|---|
|
|
访问当前行的单元格迭代器。 |
|
|
按可见单元格索引查找单元格。 |
|
|
按解析后的网格列查找单元格。 |
|
|
读取行高。 |
|
|
读取行高规则。 |
|
|
设置行高和行高规则。 |
|
|
检查当前行是否禁止跨页拆分。 |
|
|
开启或清除禁止跨页拆分。 |
|
|
检查当前行是否作为重复表头。 |
|
|
开启或清除重复表头元数据。 |
|
|
替换当前行的所有可见单元格文本。 |
|
|
在当前行前后插入行。 |
|
|
向当前行追加单元格。 |
TableCell¶
方法 |
返回值 |
用途 |
|---|---|---|
|
|
访问单元格内部段落。 |
|
|
读取单元格扁平化文本。 |
|
|
替换单元格文本。 |
|
|
在当前单元格前后插入单元格。 |
|
|
读取单元格宽度。 |
|
|
设置单元格宽度,单位是 twips。 |
|
|
读取横向跨列数量。 |
|
|
读取解析后的网格列索引。 |
|
|
向右合并指定数量的单元格。 |
|
|
向下合并指定数量的单元格。 |
|
|
清除横向或纵向合并状态。 |
|
|
读取纵向合并状态。 |
|
|
读取纵向跨行数量。 |
|
|
读取单元格垂直对齐方式。 |
|
|
设置单元格垂直对齐方式。 |
|
|
读取文字方向。 |
|
|
设置文字方向。 |
|
|
读取单元格底色。 |
|
|
设置单元格底色。 |
|
|
读取某个单元格边距。 |
|
|
设置某个单元格边距。 |
|
|
读取某个单元格边框。 |
|
|
设置某个单元格边框。 |
示例¶
auto table = doc.body_template().append_table(2, 3);
table.set_layout_mode(featherdoc::table_layout_mode::fixed);
table.set_width_twips(9000);
table.set_row_texts(0, {"SKU", "Name", "Quantity"});
auto header = table.find_row(0);
if (header) {
header->set_repeats_header();
}
auto sku = table.find_cell(0, 0);
if (sku) {
sku->set_fill_color("D9EAF7");
sku->set_vertical_alignment(featherdoc::cell_vertical_alignment::center);
}