Обновленная версия моего вопроса.Ниже приведен код для создания двух документов 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 для создания документов 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")