【发布时间】:2020-01-27 01:43:18
【问题描述】:
我的问题的更新版本。下面是生成两个 Word 文档的代码。第一个文档包含一系列表格标题,每个标题都有一个随附的书签。第二个文档包含一个实际的表。
我想做的是根据第一个文档中指定的内容确定第二个文档中的表格标题应该是什么。我相信这样做的机制可能涉及在第一个文档中找到相关的书签,向上移动一行到实际标题所在的位置,然后复制标题,以便它可以在第二个文档中使用。
library(officer)
library(magrittr)
library(flextable)
read_docx() %>%
body_add_par(value = "Fred Table", style = "table title") %>%
body_add_par("") %>%
body_bookmark(id = "FredBMK") %>%
body_add_par("") %>%
body_add_par(value = "Sally Table", style = "table title") %>%
body_add_par("") %>%
body_bookmark(id = "SallyBMK") %>%
body_add_par("") %>%
body_add_par(value = "George Table", style = "table title") %>%
body_add_par("") %>%
body_bookmark(id = "GeorgeBMK") %>%
body_add_par("") %>%
body_add_par(value = "Sample Data from the mtcars Dataset", style = "table title") %>%
body_add_par("") %>%
body_bookmark(id = "mtcarsBMK") %>%
body_add_par("") %>%
body_add_par(value = "Susan Table", style = "table title") %>%
body_add_par("") %>%
body_bookmark(id = "SusanBMK") %>%
body_add_par("") %>%
print(target = "Test Report Skeleton.docx")
read_docx() %>%
body_add_par(value = "Table Title (Corresponding to mtcarsBMK) from Other Document Goes Here", style = "table title") %>%
body_add_par("") %>%
body_add_flextable(flextable(mtcars[1:12, 1:3])) %>%
print(target = "Test Target Table.docx")
原问题:
我正在使用 Rofficer 包来生成 Word 文档。想象一下文本最初在两个 word 文档中同步的场景。一个是较大的报表,另一个是生成的表格,然后自动插入到报表中。两个文档中表格的标题开头相同。现在假设医学作者手动更改报告中表格的标题。我希望能够检测到这一点,然后自动更新表格中的标题,使其与报告中的内容相匹配。
officer 包文档展示了如何用用户指定的文本字符串替换单个文档中的文本。我不清楚它是否可以用来做我想要完成的事情。我也不清楚这不能在官员内部完成。
下面是一些制作两个word文档的代码。一个代表对表格标题进行了更改的报告。另一个代表需要更新其标题以匹配报告的原始表格。差异很小。一个标题中的单词全部大写,而另一个标题中没有。
我希望有人清楚如何检测第一个文档中的更改,然后更新第二个文档中的标题。
library(officer)
library(magrittr)
read_docx() %>%
body_add_par(value = "AWESOME Table", style = "table title") %>%
body_add_par("") %>%
body_bookmark(id = "AwesomeBMK") %>%
body_add_par("(Awesome table appears here immediately after AwesomeBMK bookmark)") %>%
print(target = "Awesome Report.docx")
read_docx() %>%
body_add_par(value = "Awesome Table", style = "table title") %>%
body_add_par("") %>%
body_bookmark(id = "AwesomeBMK") %>%
body_add_par("(Awesome table appears here immediately after AwesomeBMK bookmark)") %>%
print(target = "Awesome Table.docx")
【问题讨论】:
-
对我来说,不清楚您的团队打算如何处理这个问题。你为每个人创建 docx 吗?文档中是否只有表格作为内容,还是添加了更多内容?为什么还要更改表格标题?我还看到您想使用
body_bookmark(id = "SusanBMK")作为某种标记,这似乎是个好主意,但人们可能会不小心删除它? -
谁制造什么以及何时制造尚未完全确定。当尝试在生产环境中实施时,这可能会变得很清楚。人们可以删除书签。计划是采取措施减轻这种情况。一直在处理更大的代码。试图产生一种概念证明。当前的问题是我的一个症结所在。曾希望有人会立即知道答案并愿意与我分享。我想我需要自己找时间更全面地调查此事。