包XLConnect和xlsx

我想读取所有的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) ,我得到了错误信息

错误in(function(classes,fdef,mtable):找不到函数'readWorksheet'的签名'jobjRef','list''的inheritance方法'

任何方法可以使两个包一起工作,或者,其他方法来读取多个表的Excel文件到一个DF列表? 非常感谢!

这里的主要问题是,你似乎已经加载了两个具有相同函数名称的包。 xlsxXLConnect都提供了loadWorkbookgetSheets函数。 这是你的大部分错误来自哪里。 因此,您正在调用loadWorkbookgetSheets并为它们提供这些函数不期望的对象types的参数。

你最好只用其中的一个来获得你想要的data.frames列表。 现在我build议坚持使用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函数。 您将需要先打开工作簿或创build它,如果它不存在。 然后在数据将要去的地方创build表格名称。 此时,您可以将数据框添加到其相应的工作表。 一旦完成,那么你可以保存工作簿。

 new_wb = loadWorkbook('aaa.xlsx', create=TRUE) createSheet(new_wb, names(lst)) writeWorksheet(new_wb, data=lst, sheet=names(lst)) saveWorkbook(new_wb) 

我希望这有帮助。