【问题标题】:Add a flextable at a bookmark in the body of a word document from R在来自 R 的 word 文档正文的书签处添加一个 flextable
【发布时间】:2018-10-01 01:30:02
【问题描述】:

我正在尝试在 Word 文档正文中的特定书签处添加一个 flextable。到目前为止,我找到了以下选项:

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

但它们都没有完全满足我的需要。

我尝试编写自己的代码来执行此操作(见下文),但它说找不到 docx_str 函数。 (我从headers_flextable_at_bkm 函数处理/修改了这段代码)。有没有人有办法做到这一点?还是可以添加到 flextable 包中的功能?

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)
    }
  }
}

【问题讨论】:

    标签: r flextable officer


    【解决方案1】:

    这个函数应该做你需要的:

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

    【讨论】:

    • 另一方面,有没有办法自动计算列总和并将其添加到表的页脚中?
    【解决方案2】:

    经过一番挖掘后,有一种解决方法,您可以在 body_add_flextable(x, flextable) 命令之前添加 set_curser(x, bookmarkID)

    为了保持一致性,将body_flextable_at_bkm 作为 flextable 包的一部分仍然很好,因此它可以像headers_flextable_at_bkmfooters_flextable_at_bkm 命令一样使用。

    编辑:body_flextable_at_bkm 命令现在应该适用于最新版本的软件包。

    【讨论】:

      猜你喜欢
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多