Добавьте гибкую таблицу в закладку в текстовом документе из R - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь добавить гибкую таблицу к определенной закладке в теле документа Word.Пока я нашел следующие опции:

  • footers_flextable_at_bkm {flextable}
  • headers_flextable_at_bkm {flextable}
  • body_add_flextable {flextable}

Но никто из них не делает именно то, что мне нужно.

Я пытался написать собственный код для этого (см. Ниже), но он говорит, что функция docx_str не найдена.(Я скопировал / изменил этот код из функции headers_flextable_at_bkm).У кого-нибудь есть способ сделать это?Или это функция, которую можно добавить в гибкую упаковку?

body_flextable_at_bkm <- function(x, bookmark, value){

  stopifnot(inherits(x, "rdocx"), inherits(value, "flextable"))

  str <- docx_str(value, doc = x, align = "center")

  xml_elt <- as_xml_document(x)

  for(doc_obj in x$body){
    if( doc_obj$has_bookmark(bookmark) ){
       doc_obj$cursor_bookmark(bookmark)
       cursor_elt <- doc_obj$get_at_cursor()
       xml_replace(cursor_elt, xml_elt)
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Эта функция должна делать то, что вам нужно:

body_flextable_at_bkm <- function(x, bookmark, value){ x <- cursor_bookmark(x, bookmark) x <- body_add_flextable(x = x, value = value, pos = "on") x }

0 голосов
/ 01 октября 2018

После еще нескольких копаний есть обходной путь, в котором вы добавляете set_curser(x, bookmarkID) перед командой body_add_flextable(x, flextable).

Для согласованности было бы неплохо иметь body_flextable_at_bkm как часть гибкого пакетапоэтому его можно использовать как команды headers_flextable_at_bkm и footers_flextable_at_bkm.

Редактировать: команда body_flextable_at_bkm теперь должна работать с последней версией пакета.

...