【问题标题】:R find and replace text in .xlsx filesR在.xlsx文件中查找和替换文本
【发布时间】:2020-04-12 19:57:12
【问题描述】:

所以我的任务很简单,我想用 R 来解决这个问题。我在一个文件夹中有数百个 excel 文件 (.xlsx),我想替换一个特定的文本而不改变工作表的格式并保留单元格中的其余文本,例如:

要查找的文本: F13 A

替换为: F20

当前单元格中的文本: F13 2019 年

期望的结果: F20 2019 年

我用谷歌搜索了很多,但没有找到合适的东西,尽管这似乎是一项常见的任务。我有一个使用 Powershell 的解决方案,但速度很慢,我不敢相信没有简单的方法可以使用 R。我确定之前有人遇到过同样的问题,我会接受任何建议。

【问题讨论】:

  • 为什么要使用 R?这使它变得非常复杂,因为您必须将 XLSX 读入 R(不能在本地进行),更改某些内容,然后再次保存为外国格式。这在 VBA 中会更容易做到,这是合适的工具。那么为什么是 R?

标签: r excel replace find xlsx


【解决方案1】:

你可以试试:

text_to_look <- 'F13 A'
text_to_replace <- 'F20'
all_files <- list.files('/path/to/files', pattern = '\\.xlsx$', full.names = TRUE)

lapply(all_files, function(x) {
     df <- openxlsx::read.xlsx(x)
     #Or use readxl package
     #df <- readxl::read_excel(x)
     df[] <- lapply(df, function(x) {x[grep(text_to_look, x)] <- text_to_replace;x})
     openxlsx::write.xlsx(df, basename(x))
})

【讨论】:

  • 感谢@Ronak Shah,但有没有办法在文档中保留原始格式?此外,它不适用于有附加文本的单元格。例如在带有文本的单元格中:“F13 A 2019”没有变化,你有解决这个问题的想法吗?
  • @Davido 文档中的原始格式是什么意思?我更新了答案以使其适用于部分匹配。你能检查一下吗?
猜你喜欢
  • 1970-01-01
  • 2020-07-29
  • 2013-05-26
  • 2019-07-30
  • 2019-10-16
  • 2014-07-05
  • 2013-05-27
  • 2013-01-29
  • 2020-06-22
相关资源
最近更新 更多