如何为无表头的flextable添加表头?含huxtable转flextable场景
为无表头的flextable添加可跨页重复的表头
方法1:从原数据列名重建表头
如果清楚生成flextable的原数据列名,可直接提取列名作为表头添加,同时配置docx跨页重复属性:
library(flextable) # version 0.9.2 # 模拟无表头的flextable实例 flexiris_without_head <- flextable(iris) %>% delete_part(part = "header") # 重建表头并开启跨页重复 flexiris_restored <- flexiris_without_head %>% add_header_row(values = colnames(iris), top = TRUE) %>% set_table_properties(layout = "autofit", word_title = TRUE) %>% autofit() flexiris_restored
方法2:用restore_part恢复默认表头
如果flextable对象未丢失原数据的元信息,可直接恢复默认表头部分:
# 恢复表头并配置跨页重复 flexiris_restored <- flexiris_without_head %>% restore_part(part = "header") %>% set_table_properties(layout = "autofit", word_title = TRUE) %>% autofit()
针对huxtable转flextable的场景优化
从huxtable转换后丢失表头时,可提取原数据或huxtable的表头信息添加:
library(huxtable) library(flextable) # 创建huxtable对象并转换为无表头的flextable hux_iris <- as_huxtable(iris) flex_from_hux <- as_flextable(hux_iris) %>% delete_part(part = "header") # 添加表头并开启跨页重复 flex_with_header <- flex_from_hux %>% add_header_row(values = colnames(iris), top = TRUE) %>% set_table_properties(layout = "autofit", word_title = TRUE) %>% autofit()
关键说明
set_table_properties(word_title = TRUE)是实现docx中表头跨页重复的必要设置add_header_row(top = TRUE)保证添加的行作为表格顶部的主表头restore_part仅适用于flextable保留了原数据元信息的场景
内容的提问来源于stack exchange,提问作者Patrick
相关产品推荐
相关产品推荐

