3

下面的代码不起作用

library(officer)
library(magrittr)

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

输出:

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

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

文档.docx:

tjsdhgudfhgku
placeholder1 blahblahblah
blah-blah

为什么这样?

4

1 回答 1

5

以下解释是从函数的帮助文件中复制而来的:

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

您可以使用officer函数docx_show_chunk来显示当前光标处的文本段落是如何被分块的,以及每个块中的文本。这可以帮助解决查找文本的意外故障。[...]

于 2018-06-26T16:46:42.870 回答