我正在使用
officer
包创建一个包含一些表格的 Word 文档。我希望表格有简单的线条分隔单元格,但我不知道该怎么做。我用 body_add_table()
添加每个表,并且我知道有一个名为 fp_border()
的函数,但在文档或互联网上我找不到如何关联这两个函数。我尝试在 fp_border()
之前和之后以及 read_docx()
之前拨打 body_add_table()
,但没有效果。我还读到应该使用 package“flextable”来代替,但在这种情况下,拥有 fp_border()
函数有什么意义?
看起来我必须选择
flextable
,但我想确定一下。
PS:我在这里遇到了一个非常奇怪的错误:
The tag [table] is too similar to [table]. If you think this new tag should be allowed, discuss it on meta.
我的解决方案是这样的:
library(officer)
library(flextable)
tab = data.frame(...)
set_flextable_defaults(split=F)
dx = read_docx()
dx = body_add_par(dx,'Some text',pos='after')
dx = body_add_par(dx,'',pos='after')
dx = body_add_par(dx,'Some more text',pos='after')
dx = body_add_par(dx,'',pos='after')
ft = flextable(tab)
ft = set_header_labels(ft,values=gsub('.',' ',names(tab),fixed=T))
ft = border_outer(ft,fp_border(width=0.5))
ft = border_inner_h(ft,fp_border(width=0.5))
ft = border_inner_v(ft,fp_border(width=0.5))
ft = set_table_properties(ft,'autofit',width=1) # whole page width, 1 = 100%
ft = fontsize(ft,size=10, part='all')
dx = body_add_flextable(dx,ft)
dx = body_add_break(dx,pos='after')