各位朋友,大家好!
我正在做一个基于word的报告自动化任务。这些报告基本上是一些标准文本,十几个图表,一些我需要根据逻辑填充的数字/趋势文本值。趋势文本,数值或图表将从后端数据库生成。
我可以使用数据库生成一个带有图表的空白文档,我使用的R包是ReporteRs、RODBC、officer和相应的依赖包,ggplot2用于图表。然而,我想实现的是,有一个word文档模板与某种类型的占位符,我可以把图表和这些数值。
我有如下的基本代码
doc <- docx(title="my doc")
mychart <- ggplot(.....)
doc <- addPlot(doc, fun=print, x = mychart)
writeDoc(doc, filename)有没有人能建议如何完成这项任务。我在docx中看到了模板参数的用法,但我找不到合适的示例来将值放在占位符中,或者将图表放在Word文档中的特定占位符上。
希望我已经解释清楚了,如果没有,请让我知道。
发布于 2017-10-27 11:40:31
好了,我终于想出了实现它的方法。
MS-Word允许在文档中放置占位符,并为它们添加书签,以便可以将值/数据/图像放在它们的位置。
您可以创建一个普通的word文档(而不是作为word模板),并根据您的要求在其中添加静态内容和带书签的占位符。请参考here以了解如何添加书签,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:)您应该会看到新文件,在您放置其占位符的位置替换了一个图表。
发布于 2017-11-17 09:41:00
我推荐使用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的引用。Tools > References > Microsoft Word xxx Object Library.
https://stackoverflow.com/questions/46952018
复制相似问题