使用write.xlsx将现有工作表替换为R包xlsx

时间:2015-01-20 19:01:17

标签: java r excel overwrite r-xlsx

我正在使用包xlsx版本:0。0。7日期:2014-08-01。在R版本3.0.1(2013-05-16) - “好运动”平台:i386-w64-mingw32 / i386(32位)。

我有一个xlsx文件,至少有2张(比如A和B)。我需要从A读取数据,编辑它们并将它们保存在B中。这必须在期刊基础上完成。

我可以使用read.xlsx从A读取数据。编辑数据框后,我想将其保存在同一xlsx文件中的现有工作表B中。

我尝试使用此行

write.xlsx(down, paste0(root,'/registration reports/registration complete_WK.xlsx'), sheet="data_final", col.names=T, row.names=F, append=T, showNA=F)

但它给了我这个错误:

  

.jcall(wb, "Lorg/apache/poi/ss/usermodel/Sheet;", "createSheet",中的错误:     java.lang.IllegalArgumentException:工作簿已包含此名称的工作表

我真的需要多次更换现有的纸张。我怎样才能做到这一点?

感谢, 菲利普

2 个答案:

答案 0 :(得分:15)

如果要将新数据帧保存在现有的Excel文件中,首先必须加载xlsx文件:

wb <- loadWorkbook(file)

你会得到哪些表格:

sheets <- getSheets(wb)

您可以轻松地删除和添加(并因此替换)工作表:

removeSheet(wb, sheetName="Sheet1")
yourSheet <- createSheet(wb, sheetName="Sheet1")

比使用数据框填充工作表:

addDataFrame(yourDataFrame, yourSheet, <options>)
addDataFrame(anotherDataFrame, yourSheet, startRow=nrow(yourDataFrame)+2)

最后一步是将整个工作簿保存为.xlsx:

saveWorkbook(wb, file)

btw:xlsx-package的文档非常好,对这些问题很有帮助:) http://cran.r-project.org/web/packages/xlsx/xlsx.pdf

答案 1 :(得分:0)

可能是您计算机上安装的Java与xlsx库不兼容。以下主题讨论了关于同一个包的类似问题: enter link description here

或者,您的问题可能由不同的Excel相关软件包解决,例如XLConnect。看这篇文章: enter link description here