【发布时间】:2021-08-17 16:06:49
【问题描述】:
此link 解释了如何使用基于ReporteRs 包的R 代码在Word 文档中添加简单或自定义表格。
我的任务完全不同。我已经有一个word文件:file。我想为每个表添加一个新行(即红色、黄色、蓝色、黑色数据集)。第一列应该是今天的日期(我猜是Sys.Date()),其他单元格可以是随机的(在这个级别上它们并不重要)。
【问题讨论】:
此link 解释了如何使用基于ReporteRs 包的R 代码在Word 文档中添加简单或自定义表格。
我的任务完全不同。我已经有一个word文件:file。我想为每个表添加一个新行(即红色、黄色、蓝色、黑色数据集)。第一列应该是今天的日期(我猜是Sys.Date()),其他单元格可以是随机的(在这个级别上它们并不重要)。
【问题讨论】:
首先,“ReporteRs 已被重写。新包是officer。[...] 可以使用包mschart 生成本机Microsoft 图表。请使用officer 而不是ReporteRs”(D. Gohel 在 ReporteRs)。
我从不需要在 word 文件中编辑表格,但是使用 officer,您应该读取数据 → 将表格导入为数据框并用 R 语言进行一些修改 → 导出一个新的 .docx 以满足您的需要(使用旧段落和您刚刚计算的“新”表)。
或者,也可以在 .docx 文件中编辑表格,这些表格是某种“段落”的字样:有必要使用一些指针或正则表达式来指示哪些表格被编辑(例如,package vignette , SO question & answer here)。
祝你好运
【讨论】:
这是一个使用 R 包 RDCOMClient 的解决方案:
library(DescTools)
library(RDCOMClient)
report <- GetNewWrd(template = normalizePath("C:\\...\\file.docx"))
report[["Visible"]] <- TRUE
nb_Tables <- report[["ActiveDocument"]]$Tables()$Count()
for(l in 1 : nb_Tables)
{
obj_Table <- report[["ActiveDocument"]]$Tables(l)
nb_Row <- obj_Table$Rows()$Count()
nb_Col <- obj_Table$Columns()$Count()
obj_Table$Rows()$Add()
for(j in 1 : nb_Col)
{
obj_Table$Cell(nb_Row + 1, j)$Range()$InsertAfter(paste0("l : ", l, " and j : ", j))
}
}
report[["ActiveDocument"]]$SaveAs("C:\\...\\modified_file.docx")
【讨论】: