通过 R openxlsx 包写入新数据后 Excel 公式未更新

问题描述 投票:0回答:1

我正在尝试使用 R 语言openxlsx 库自动化 Excel 中的某些流程。

当我将新数据写入引用其他单元格中的公式的单元格(工作正常)时,即使在我保存文件并尝试再次读取之后,带有公式的单元格也不会更新其值。

有任何解决方法可以解决此问题吗?

代码和工作簿如下。

library(openxlsx)

getwd()
setwd('Downloads')

wb = loadWorkbook('Plan.xlsx')
wb

activeSheet(wb) = 2
activeSheet(wb)

writeData(wb, sheet=2, startCol = 2, startRow = 2, x = 'p2')
print(read.xlsx(wb, sheet=2, startRow = 2, cols = c(3,4,5), colNames = F))
saveWorkbook(wb, file = 'Plan.xlsx', overwrite = T, returnValue = T)

计划1 计划2

尝试:

  1. 保存文件;
  2. 关闭它;
  3. 再读一遍;

期望单元格更新为新值。

r excel excel-2010 openxlsx
1个回答
0
投票

从 Windows 强制重新计算的一种方法是对 VBScript 进行系统调用,以打开、重新计算和保存电子表格。 例如,以下内容保存在名为“OpenCalcSave.vbs”的文本文件中

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("P:\ath\to\FileOfInterest.xlsx")
objExcel.Calculate
objWorkbook.Save
objExcel.ActiveWorkbook.Close true
Set objExcel = Nothing
Set objWorkbook = Nothing

然后从 R 内部使用:

  system("csscript P:\\ath\\to\\VBScript\\OpenCalcSave.vbs", wait = TRUE)

如果需要,可以扩展 VBScript 以接受参数并执行其他功能。有关激发此答案的解决方案的更完整描述,请参阅此处

© www.soinside.com 2019 - 2024. All rights reserved.