包 "officer" 中的 body_replace_all_text() 方法不起作用
Doesn't work body_replace_all_text() method in package "officer"
下面的代码不起作用
library(officer)
library(magrittr)
read_docx("/home/user/document.docx") %>%
body_replace_all_text("placeholder1", "text1") %>%
print(target = "/home/user/out.docx")
输出:
Found 0 instances of 'placeholder1' in the document.
但是如果我使用字符串 "tjsdhgudfhgku" 而不是 "placeholder1" 它会起作用。
document.docx:
tjsdhgudfhgku
placeholder1 blahblahblah
blah-blah
为什么会这样?
以下解释复制自该函数的帮助文件:
[...] 请注意,Word 文档中文本的幕后表示通常不是您所期望的!有时,由于样式更改、文本输入暂停、后期修订和编辑等原因,一段文本会被分解(或 "chunked")成几个 "runs,"。如果您没有为文本设置样式,并以 "all-at-once" 的方式输入,例如通过将其粘贴或以编程方式将其输出到您的 Word 文档中,那么这可能不是问题。但是,如果您使用的是手动编辑的文档,这可能会导致意外的查找文本失败。
您可以使用官方函数docx_show_chunk
来显示当前光标处的文本段落是如何分块成行的,以及每个块中的文本是什么。这有助于解决意外的文本查找失败问题。
[...]
下面的代码不起作用
library(officer)
library(magrittr)
read_docx("/home/user/document.docx") %>%
body_replace_all_text("placeholder1", "text1") %>%
print(target = "/home/user/out.docx")
输出:
Found 0 instances of 'placeholder1' in the document.
但是如果我使用字符串 "tjsdhgudfhgku" 而不是 "placeholder1" 它会起作用。
document.docx:
tjsdhgudfhgku
placeholder1 blahblahblah
blah-blah
为什么会这样?
以下解释复制自该函数的帮助文件:
[...] 请注意,Word 文档中文本的幕后表示通常不是您所期望的!有时,由于样式更改、文本输入暂停、后期修订和编辑等原因,一段文本会被分解(或 "chunked")成几个 "runs,"。如果您没有为文本设置样式,并以 "all-at-once" 的方式输入,例如通过将其粘贴或以编程方式将其输出到您的 Word 文档中,那么这可能不是问题。但是,如果您使用的是手动编辑的文档,这可能会导致意外的查找文本失败。
您可以使用官方函数docx_show_chunk
来显示当前光标处的文本段落是如何分块成行的,以及每个块中的文本是什么。这有助于解决意外的文本查找失败问题。
[...]