使用R中的xlsx包更新excel电子表格数字

Lor*_*nor 5 excel r

我有一个关于R中的xlsx包的查询.我知道如何使用包中的大多数函数,直到现在还没有遇到任何问题.我将首先显示我的代码然后问我的问题.

#Code-Section1: 
library(xlsx) 
data1<-iris 
data1<-data1[,c(5,1:4)] 
wb <- createWorkbook() 
sheet1 <- createSheet(wb, sheetName="Sheet1") 
addDataFrame(data1, sheet1, startRow=1, startColumn=1,row.names=FALSE)  
saveWorkbook(wb, file="test.xlsx")  
rm(data1);rm(sheet1);rm(wb) 
#Code-Section1-end: 
Run Code Online (Sandbox Code Playgroud)

这部分只是简单地获取虹膜数据集并将其放入名为Sheet.xlsx的excel电子表格中的Sheet1中.现在在Excel中我决定通过添加总行来向电子表格添加更多内容,因此excel电子表格的最后两行是:

virginica   5.9     3.0     5.1     1.8
            876.5   458.6   563.7   179.9
Run Code Online (Sandbox Code Playgroud)

我要做的另一件事是在电子表格中再添加4列,其中包含行总数中每个数字的百分比.接下来,我想将test.xlsx加载到R工作簿中.我定义了一个名为temp的新数据框,带有一些随机的正常值.我的目的是更新test.xlsx文件中的数字,以便行总数和百分比随后也会更改.更新的电子表格的最后两行应该是不同的,具体取决于rnorm(150,5,1)值的输出.我将数据框保存到名为testa.xlsx的新电子表格中.值已更新,但由于某种原因,行总数和百分比保持不变,即使其单元格的值仍为"= sum(b2:b151)"或"= b2/b $ 152".

#Code-Section2: 
temp <- data.frame(Sepal.Length=rnorm(150,5,1), Sepal.Width=rnorm(150,5,1), Petal.Length=rnorm(150,5,1), Petal.Width=rnorm(150,5,1)) 
wb<-loadWorkbook("test.xlsx") 
f<-getSheets(wb)[[1]] 
addDataFrame(temp, sheet=f, startRow=2, startColumn=2,row.names=FALSE,col.names=FALSE) 
saveWorkbook(wb, file="testa.xlsx") 
#Code-Section2-end: 
Run Code Online (Sandbox Code Playgroud)

因此,我的问题是,如何加载工作簿,更新数字,以便随后更新其中包含公式的单元格,然后将其保存到新的Excel文件中.我可以用另一种方式做到这一点,但它需要更多的步骤,我不介意做,但只是更新数字,所以其他单元格将改变将是如此方便.与我发布的每个帖子一样,请原谅任何语法错误,如果您认为有必要,请随时更改此消息.

flo*_*del 8

在保存工作簿(wb)之前,请添加以下内容:

wb$setForceFormulaRecalculation(TRUE)
Run Code Online (Sandbox Code Playgroud)

如果它不工作,也有一个VBA解决方案在这里.