我正在尝试使用 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)
尝试:
期望单元格更新为新值。
从 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 以接受参数并执行其他功能。有关激发此答案的解决方案的更完整描述,请参阅此处。