包“officer”中的 body_replace_all_text() 方法不起作用

Ser*_*sov 3 r officer

下面的代码不起作用

library(officer)
library(magrittr)

read_docx("/home/user/document.docx") %>%
  body_replace_all_text("placeholder1", "text1") %>%
  print(target = "/home/user/out.docx")
Run Code Online (Sandbox Code Playgroud)

输出:

在文档中找到 0 个 'placeholder1' 实例。

但是如果我使用字符串“tjsdhgudfhgku”而不是“placeholder1”,它就可以工作。

文档.docx:

tjsdhgudfhgku
placeholder1 blahblahblah
blah-blah
Run Code Online (Sandbox Code Playgroud)

为什么这样?

Dav*_*hel 5

以下解释复制自该函数的帮助文件:

[...] 请注意,Word 文档中文本的幕后表示通常不是您所期望的!有时,由于样式更改、文本输入暂停、后来的修订和编辑等,一段文本被分解(或“分块”)为多个“运行”。它以“一次性”的方式进行,例如通过粘贴或以编程方式将其输出到您的 Word 文档中,那么这可能不是问题。但是,如果您正在使用手动编辑的文档,这可能会导致意外的文本查找失败。

您可以使用官员功能docx_show_chunk来显示当前光标处的文本段落是如何分块的,以及每个块中的文本是什么。这可以帮助解决查找文本的意外失败。[...]

  • 谢谢你。我只是剪切了“placeholder1”并在同一个地方应用了“选择性粘贴”->“无格式文本”,它可以工作。 (3认同)