我正在使用R包XLConnect将数据帧写入现有工作簿中的现有excel工作表。excel工作簿有一个用于原始数据的工作表,我writeWorksheet()
在R中使用它填充,还有一个用于格式化数据的工作表,该工作表引用了原始数据工作表并执行计算。但是,当我将数据写入R中的原始数据工作表时,格式化的数据工作表不会更新,并且会出现错误,“公式引用空单元格”,即使这些单元格中有数据。我不确定此错误是否是由于R和XLConnect或我的工作簿中的某些原因引起的。当我简单地将数据直接复制并粘贴到“原始数据导入”工作表中的单元格中时,不会出现错误。请参见下面的示例,并感谢您的帮助:
在R中:
library(XLConnect)
# Creating first data frame
L3 <- LETTERS[1:3]
fac <- sample(L3, 10, replace = TRUE)
(d <- data.frame(x = 1, y = 1:10, fac = fac))
df.1<-data.frame(1, 1:10, sample(L3, 10, replace = TRUE))
# Creating second data frame
L4 <- LETTERS[4:7]
fac <- sample(L4, 10, replace = TRUE)
(d <- data.frame(x = 1, y = 1:10, fac = fac))
df.2<-data.frame(1, 1:10, sample(L4, 10, replace = TRUE))
# Reading in workbook
wb <- loadWorkbook(xlname)
wbnames <- as.vector(getSheets(wb)) # where wbnames is of length two
[1] "Raw Data Import" [2] "Formatted Data"
# Writing df.1 and df.2 to specific locations in Raw Data Import worksheet
writeWorksheet(wb,df.1,sheet=wbnames[1],startRow=3,header=F)
writeWorksheet(wb,df.2,sheet=wbnames[1],startRow=15,header=F)
# Saving workbook
saveWorkbook(wb)
您可以使用XLConnect功能setForceFormulaRecalculation()
。这将迫使Excel在打开工作表时重新计算公式值。第二个参数允许您指定要重新计算的图纸。如果将其设置为“ *”,它将重新计算工作簿中的所有公式。
wb <- loadWorkbook(xlname)
wbnames <- as.vector(getSheets(wb))
writeWorksheet(wb,df.1,sheet=wbnames[1],startRow=3,header=F)
writeWorksheet(wb,df.2,sheet=wbnames[1],startRow=15,header=F)
setForceFormulaRecalculation(wb,"*",TRUE)
saveWorkbook(wb,'~/test.xls')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句