R语言 如何在一个.docx文件中使用保存_as_docx创建更多表

sg3maiej  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(156)

我创建了以下文件列表:

require(writexl)
write_xlsx(mtcars, 'PQ_ele_com.xlsx')

dir = c('com', 'set', 'rit')
init = c('PQ', 'MG')
inpst = c('_ele_', '_mel_', '_col_')

for (i in dir) {
  for (j in init) {
    for (k in inpst){
      write_xlsx(mtcars[3,],, paste0(j, k, i, '.xlsx')) 
    }
  }
}

setwd("C:/Users/PC/Desktop/my_folder")
files = list.files("C:/Users/PC/Desktop/my_folder", recursive= FALSE, full.names= FALSE)

init = c('PQ', 'MG')
dir = c('com', 'set', 'rit')

files = list.files(recursive= FALSE, full.names= FALSE)
init = c('PQ', 'MG')
dir = c('com', 'set', 'rit')
 
 list3 = NULL
 for (j in init){
   for (k in dir){
     df=c()
     for (i in files){
       if(str_detect(i, pattern = j) & str_detect(i, pattern = k) == TRUE) {
         df=rbind(df,read_excel(i))}
     }
     list3[[j]][[k]] = df
   }
 }

我想把所有用flextable创建的表格保存在一个文件中。我试过这个解决方案,但它只能在不同的工作表上打印表格,并重复多次。我可以在其中做什么改变?即使用save_as_docx,你还有其他建议吗?

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

my_doc <- read_docx()

lapply(list3, function(x) walk(x, write_word_table , my_doc))
print(my_doc, target = "C:/Users/PC/Desktop/D1.docx") %>% invisible()

谢谢

qacovj5a

qacovj5a1#

虽然我可能会使用lapply来创建数据集列表,但在导出时,我会使用for循环,但您也可以使用例如Reduce

library(flextable)
library(officer)

write_word_table <- function(var, doc){
  doc %>%
    body_add_flextable(flextable(var)) %>% 
    body_add_break() 
}

my_doc <- read_docx()

for (x in list3) {
  for (var in x) {
    my_doc <- write_word_table(var, my_doc)
  }
}

print(my_doc, target = "D1.docx")

相关问题