具有动态值的R-ReporteRs包word模板

具有动态值的R-ReporteRs包word模板,r,templates,ms-word,ms-office,R,Templates,Ms Word,Ms Office,大家好 我正在做一个基于word的报告自动化任务。这些报告基本上是一些标准文本、十几个图表、一些数字/趋势文本值,我需要根据逻辑填充这些值。趋势文本、数值或图表将从后端数据库生成 我能够使用数据库生成带有图表的空白文档,我使用的R包是ReporteRs、RODBC、officer和相应的依赖项包,用于图表的ggplot2。 然而,我想实现的是,有一个word文档模板,其中包含一些占位符,我可以在其中放置图表和这些数值 我的基本代码如下 doc <- docx(title="my d

大家好

我正在做一个基于word的报告自动化任务。这些报告基本上是一些标准文本、十几个图表、一些数字/趋势文本值,我需要根据逻辑填充这些值。趋势文本、数值或图表将从后端数据库生成

我能够使用数据库生成带有图表的空白文档,我使用的R包是ReporteRs、RODBC、officer和相应的依赖项包,用于图表的ggplot2。 然而,我想实现的是,有一个word文档模板,其中包含一些占位符,我可以在其中放置图表和这些数值

我的基本代码如下

    doc <- docx(title="my doc")
    mychart <- ggplot(.....)
    doc <- addPlot(doc, fun=print, x = mychart)
    writeDoc(doc, filename)

doc好的,我终于找到了实现它的方法

MS Word允许在文档中放置占位符并将其添加到书签中,以便将值/数据/图像放在适当的位置

您可以创建普通word文档(而不是word模板),并根据需要在其中添加静态内容以及书签占位符。 请参阅了解如何添加书签,Word默认情况下不显示现有书签,要启用该功能,请转到文件->选项->高级选中显示书签,您将在方括号中看到[your_bookmark]内容

下一步在R中,尝试以下代码

doc <- docx(title="title", template="c://above_template.docx")
doc = addPlot(doc, x=myChartVariable, bookmark="your_chart_bookmark)
writeDoc(doc, "c://new_doc_file_path.docx:)

doc我建议使用VBA,而不是R。在Word中搜索DocVariables。在Word模板中添加一些DocVariables,将分析保存在Excel中,然后将Excel中的内容推送到Word DocVariables中。使用下面在Excel中运行的脚本,使一切正常

Sub PushToWord()

Dim objWord As New Word.Application
Dim doc As Word.Document
Dim bkmk As Word.Bookmark
sWdFileName = Application.GetOpenFilename(, , , , False)
Set doc = objWord.Documents.Open(sWdFileName)
'On Error Resume Next

objWord.ActiveDocument.variables("BrokerFirstName").Value = Range("BrokerFirstName").Value
objWord.ActiveDocument.variables("BrokerLastName").Value = Range("BrokerLastName").Value
objWord.ActiveDocument.variables("Ryan").Value = Range("Ryan").Value


objWord.ActiveDocument.Fields.Update

'On Error Resume Next
objWord.Visible = True

End Sub

最后,从Excel中添加对Word的引用<代码>工具>参考>Microsoft Word xxx对象库。

这可能是由VBA完成的毫无疑问,我时间紧迫,加上在VBA中完成的任务很繁琐,太多的行无法格式化图表,操作单元格/区域等等。在R中,我能够用比用VBA编写的代码行更少的代码快速地完成这项工作(我不是在责难它)。谢谢你的意见。