首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R- ReporteRs包-带动态值的word模板

R- ReporteRs包-带动态值的word模板
EN

Stack Overflow用户
提问于 2017-10-26 18:29:10
回答 2查看 504关注 0票数 2

各位朋友,大家好!

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

我可以使用数据库生成一个带有图表的空白文档,我使用的R包是ReporteRs、RODBC、officer和相应的依赖包,ggplot2用于图表。然而,我想实现的是,有一个word文档模板与某种类型的占位符,我可以把图表和这些数值。

我有如下的基本代码

代码语言:javascript
复制
    doc <- docx(title="my doc")
    mychart <- ggplot(.....)
    doc <- addPlot(doc, fun=print, x = mychart)
    writeDoc(doc, filename)

有没有人能建议如何完成这项任务。我在docx中看到了模板参数的用法,但我找不到合适的示例来将值放在占位符中,或者将图表放在Word文档中的特定占位符上。

希望我已经解释清楚了,如果没有,请让我知道。

EN

回答 2

Stack Overflow用户

发布于 2017-10-27 11:40:31

好了,我终于想出了实现它的方法。

MS-Word允许在文档中放置占位符,并为它们添加书签,以便可以将值/数据/图像放在它们的位置。

您可以创建一个普通的word文档(而不是作为word模板),并根据您的要求在其中添加静态内容和带书签的占位符。请参考here以了解如何添加书签,Word默认情况下不显示现有书签,要启用该功能,请转到文件->选项->高级检查显示书签,您将在方括号中看到your_bookmark的东西。

接下来在R中,尝试以下代码

代码语言:javascript
复制
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:)

您应该会看到新文件,在您放置其占位符的位置替换了一个图表。

票数 0
EN

Stack Overflow用户

发布于 2017-11-17 09:41:00

我推荐使用VBA,而不是R。在Word中用谷歌搜索一下DocVariables。在您的Word模板中添加一些DocVariables,将分析结果保存在Excel中,然后将Excel中的内容推送到Word DocVariables中。使用下面的脚本,它在Excel中运行,使一切正常工作。

代码语言:javascript
复制
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的引用。Tools > References > Microsoft Word xxx Object Library.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46952018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档