Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用XLConnect将数据写入excel模板时出现空单元格错误_R_Excel_Xlconnect - Fatal编程技术网

R 使用XLConnect将数据写入excel模板时出现空单元格错误

R 使用XLConnect将数据写入excel模板时出现空单元格错误,r,excel,xlconnect,R,Excel,Xlconnect,我正在使用XLConnect软件包将数据帧写入现有工作簿中的现有excel工作表。excel工作簿有一个用于原始数据的工作表,我使用R中的writeWorksheet()填充该工作表,另一个用于格式化数据的工作表引用原始数据工作表并执行计算。但是,当我将数据写入R中的原始数据工作表时,格式化的数据工作表不会更新,并给出一个错误,即“公式引用空单元格”,即使这些单元格中有数据。我不确定此错误是否是由于R和XLConnect或我的工作簿中的某些内容造成的。当我简单地将数据直接复制并粘贴到原始数据导入

我正在使用XLConnect软件包将数据帧写入现有工作簿中的现有excel工作表。excel工作簿有一个用于原始数据的工作表,我使用R中的
writeWorksheet()
填充该工作表,另一个用于格式化数据的工作表引用原始数据工作表并执行计算。但是,当我将数据写入R中的原始数据工作表时,格式化的数据工作表不会更新,并给出一个错误,即“公式引用空单元格”,即使这些单元格中有数据。我不确定此错误是否是由于R和XLConnect或我的工作簿中的某些内容造成的。当我简单地将数据直接复制并粘贴到原始数据导入工作表的单元格中时,我没有收到错误。请参见下面的示例,并感谢您的帮助:

在R中:

库(XLConnect)
#创建第一个数据帧

L3我没有成功,直到我为每个工作表添加了
createSheet
操作。如果要使用现有图纸信息,请查看
getSheets
?getSheetPos

> wb      <- loadWorkbook('~/test.xls')
> wbnames <- as.vector(getSheets(wb)) 
> createSheet(wb, "test1"); createSheet(wb, 'test2')
> writeWorksheet(wb,df.1,sheet='test1',startRow=3,header=F)
> writeWorksheet(wb,df.2,sheet='test2',startRow=15,header=F)
> saveWorkbook(wb,'~/test.xls')

XLConnect是一种准商业产品,我认为他们不鼓励对此提出疑问,因此您可能需要联系Mirai Solutions,GMBH.

您可以使用XLConnect函数
setforceFormulaRecomulation()
。这将强制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')

wb不确定“准商业”是什么意思。XLConnect是根据GPL-3许可证条款提供的自由软件:您可以发布具有适当设置(工作表、公式等)的示例工作簿吗?这很有魅力,并且比在excel中运行宏简单得多。非常感谢。
> writeWorksheet(wb,df.1,sheet='Sheet1',startRow=3,header=F); saveWorkbook(wb,'~/test.xls')
> writeWorksheet(wb,df.2,sheet='Sheet2',startRow=15,header=F)
> saveWorkbook(wb,'~/test.xls')
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')