使用 r 包将多个表格导出到 word 文档 'flextable'

Exporting several tables to word documents using r package 'flextable'

我正在尝试导出两个 (flex)table 同一个word文档。这是我的:

df1 <- data.frame(a = 1:3, b = 1:3)
df2 <- data.frame(c = 11:13, d = 11:13)

library(flextable)
df1_ft <- regulartable(df1)
df2_ft <- regulartable(df2)

library(officer)
word_export <- read_docx()
word_export <- body_add_flextable(word_export, df1_ft)
word_export <- body_add_flextable(word_export, df2_ft)
print(word_export, 'try.docx')

然而,结果是包含两个 table 的单个 table。 知道如何一个接一个地添加到两个 table 吗?

你可以试试

library(flextable)
library(tidyverse)
library(officer)
# write function
write_word_table <- function(var, doc){
  doc %>%
    body_add_flextable(var) %>% 
    body_add_break() }

# list of tables and the doc
my_list <- list(df1_ft <- regulartable(df1),
              df2_ft <- regulartable(df2))
my_doc <- read_docx()

# use walk (the invisible function of map) to include all tables in one doc
walk(my_list, write_word_table, my_doc) 
print(my_doc, target = "c:/Users/tremmel/Desktop/Doc1.docx") %>% invisible()

这两个表正在一个接一个地输出到Word,由于它们之间没有换行符,因此它们显示为一个。最简单的解决方案是在它们之间放置一个空文本的段落:

word_export <- read_docx()
body_add_flextable(word_export, df1_ft)
body_add_par(word_export, value = "")
body_add_flextable(word_export, df2_ft)
print(word_export, 'try.docx')

您还可以看到,您不需要将每个 body_add_* 行的输出重复分配回您的 word_export 文件 - 每次调用都会直接更新 Word 文件。