我想把所有的excel表格读成一个R列表df。我使用的代码是:
file <- file.choose()
name <- basename(file)
require(XLConnect)
wb <- XLConnect :: loadWorkbook(name)
lst <- readWorksheet(wb, sheet = getSheets(wb))但是,在那之后,我需要使用包'xlsx‘。如果我返回使用上述代码读取文件,则在lst <- readWorksheet(wb, sheet = getSheets(wb))之后会收到错误消息。
wb$getNumberOfSheets中的错误:未为类“工作簿”定义的方法
顺便说一句,如果我使用wb <- loadWorkbook(name),我会得到错误消息
错误(函数(类、fdef、mtable):无法为函数‘readWorksheet’找到用于签名‘jobjRef’、‘list’的继承方法
任何方法都可以使这两个包一起工作,还是其他方法可以将带有多个工作表的excel文件读取到df列表中?非常感谢!
发布于 2017-08-22 14:21:19
这里的主要问题是,您似乎已经加载了两个具有相同函数名的包。xlsx和XLConnect都提供了loadWorkbook和getSheets功能。这就是你大部分错误的来源。因此,您正在调用loadWorkbook和getSheets,并为它们提供这些函数不期望的对象类型的参数。
最好只使用其中一个来获得您想要的data.frames列表。我建议暂时坚持使用XLConnect,直到您需要xlsx包中的特定内容为止。
下面是您试图在上面运行的代码的经过调整的版本:
require(XLConnect)
file_name <- file.choose()
base_name <- basename(file_name)
wb <- XLConnect::loadWorkbook(base_name)
lst <- XLConnect::readWorksheet(wb, sheet=XLConnect::getSheets(wb))列表lst应该包含与工作簿内工作表中的数据相匹配的data.frames。
如果希望将data.frames列表保存在新的excel工作簿中,则可以使用writeWorksheet函数。如果工作簿还不存在,您需要首先打开它或创建它。然后创建工作表名,数据将在其中进行。此时,您可以将数据文件添加到相应的表中。一旦完成,您就可以保存工作簿了。
new_wb = loadWorkbook('aaa.xlsx', create=TRUE)
createSheet(new_wb, names(lst))
writeWorksheet(new_wb, data=lst, sheet=names(lst))
saveWorkbook(new_wb)我希望这能帮到你。
https://stackoverflow.com/questions/45819465
复制相似问题