XLConnect中的saveWorkbook()函数保存工作簿,更改和更新的计算在excel文件中可见,但在R上不可见(因为它具有apache poi不接受的公式)。
但是,为了查看单元格,我将文件保存到磁盘并使用另一个函数调用它。但是,当我再次调用同一个文件时,计算出的字段仍然显示旧值。我不想每次在工作簿中进行更改时都保存excel文件。
您是否了解无需手动保存excel即可调用新值的解决方法?
代码-
options(java.parameters = "-Xmx1024m")
library(rJava)
library(XLConnect)
wb = loadWorkbook(file.choose(), create = TRUE)
readWorksheet(wb,16, region = 'D25:D26')
writeWorksheet(wb,-.45,sheet = 16,startRow = 25,startCol = 4)
setForceFormulaRecalculation(wb,sheet = 16, TRUE)
saveWorkbook(wb)
detach("package:XLConnect", unload=TRUE)
detach("package:XLConnectJars", unload=TRUE)
library(xlsx)
y = read.xlsx(file.choose(), sheetIndex = 16)因此,系统上的Excel文件显示了与新的-.45值相对应的更改,但当我再次读取该文件时,计算出的值是旧值,而不是新值。如果我手动保存文件,这个问题就会得到解决。
发布于 2018-10-20 01:41:28
我相信你正在使用的命令是正确的,但也许一些小的修改就可以让它工作。
我认为您可以尝试将所需的计算放在excel的不同工作表中,并将您插入的数据作为这些计算在新工作表中的依赖项。
然后将其作为新的工作簿读入,并调用新工作表。我想这将是你所需要的输出。
setForceFormulaRecalculation(wb, sheet = "*", TRUE)我将使用此命令强制所有工作表重新计算。
希望这能有所帮助!
https://stackoverflow.com/questions/52055148
复制相似问题