0

我正在制作仪表板。基本上,我从数据库中提取选定的信息,然后我想在 word 模板中显示这些信息。我使用表格(2 行,3 列)设置模板。在每个单元格中,我都放了一个书签。然后,使用 R 包 ReporteRs,我根据书签将 R 中的特定信息放入模板内的单元格中。

ISSUE: 我似乎无法将表格插入到模板的单元格中。

尝试过:我认为这可能是由于表格的大小(因为我在插入数字时遇到过大小是问题),但事实并非如此。

下面是一个错误示例。为了运行它,您必须在一个名为“test”的单元格中创建一个带有带有书签的表格的 Word 文档。

doc = docx( title = "Dashboard",template="H:\\test.docx") 
myt <-FlexTable(cars[c(1:10),])
doc <-addFlexTable(doc,myt,bookmark="test")
writeDoc(doc, "H:\\testresult.docx")

如果您然后在表格之外创建一个书签并将表格分配给新书签,它似乎可以工作。

有谁知道如何将表格(作为表格的数据框)插入到我模板的任何单元格中?

4

1 回答 1

2

如果使用参数书签,则内容(绘图、段落或图像)将替换包含书签的整个段落。

表格的行为有所不同:表格添加在包含书签的段落之后。一种解决方法是在模板单元格中的书签段落之后添加一个段落。然后使用deleteBookmark删除包含书签的段落。

doc <- docx( title = "Dashboard",template="H:\\test.docx") 
myt <- FlexTable(cars[c(1:10),])

# make sure there is one new paragraph after the paragraph that contains 'test'
# add the FlexTable just after the paragraph containing bookmark 'test'
doc <- addFlexTable(doc,myt,bookmark="test")
# then delete the paragraph containing bookmark 'test'
deleteBookmark(doc, bookmark= "test")

writeDoc(doc, "H:\\testresult.docx")

您可以改为使用带有列的部分(并最终使用分栏符):

doc = docx( )
doc = addSection(doc, landscape = TRUE, ncol = 2 ) 
doc = addPlot( doc = doc, fun = function() {
    barplot( 1:8, col = 1:8 )
    }, width = 3, height = 3, pointsize = 5)

doc = addColumnBreak(doc ) 
doc = addFlexTable(doc, FlexTable(head(iris) ) )
于 2014-10-13T20:23:06.110 回答