12

我正在使用包xlsx版本:0.5.7 日期:2014-08-01。在 R 版本 3.0.1 (2013-05-16) 中——“Good Sport”平台:i386-w64-mingw32/i386(32 位)。

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

我能够从 A 读取数据read.xlsx。编辑数据框后,我想将其保存在同一个 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)

但它给了我这个错误:

Error in `.jcall(wb, "Lorg/apache/poi/ss/usermodel/Sheet;", "createSheet", ` : 
  java.lang.IllegalArgumentException: The workbook already contains a sheet of this name

我需要多次更换现有的工作表。我怎样才能做到这一点?

4

2 回答 2

24

如果要将新数据框保存在现有的 excel 文件中,首先必须加载 x​​lsx 文件:

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)

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

于 2015-02-17T12:49:18.297 回答
0

可能是您计算机上安装的 Java 与 xlsx 库不兼容。以下线程讨论了关于同一包的类似问题: 在此处输入链接描述

或者,您的问题可能会通过其他与 Excel 相关的软件包(例如 XLConnect)来解决。看到这篇文章: 在此处输入链接描述

于 2016-09-01T21:10:42.537 回答