在officer包中,如何给body_add_table添加一个简单的边框?

问题描述 投票:0回答:1

我正在使用

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.

r border officer
1个回答
0
投票

我的解决方案是这样的:

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')
© www.soinside.com 2019 - 2024. All rights reserved.