我的问题有所更新。以下是生成两个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")
原问题:
我正在使用R officer包生成Word文档。想象一种情况,文本最初在两个Word文档中同步。一个是较大的报告,另一个是生成的表格,然后自动插入到报告中。表格的标题最初在两个文档中都相同。现在假设医学撰稿人手动更改了报告中表格的标题。我希望能够检测到这一点,然后自动更新表格中的标题,使其与报告中的相匹配。
officer包的文档显示如何用用户指定的文本字符串替换单个文档中的文本。但我不清楚它是否可用于完成我想要实现的功能。在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")
body_bookmark(id =“SusanBMK”)
作为某种标记,这似乎是个好主意,但人们可能会意外删除它? - Johannes Stötzer