存储工作簿的内容以分隔列表中的data.frames

时间:2017-10-26 21:22:54

标签: r excel xlconnect

我正在尝试读取具有未知张数的Excel工作簿,并将每个工作表存储为变量的一部分(结果[1]给出工作表1,结果[2]给出工作表2等)。我开始尝试使用XLConnect包(我可以在Linux上正常工作)找到一种方法。当我意识到我几乎已经破坏了每个R约定时,我停了下来....任何人都有更好的解决方案,使用XLConnect包?

require(XLConnect)

demoExcelFile <- system.file("demoFiles/multiregion.xlsx", package = "XLConnect")

endloop<<-F
x<<-1
result<<-NULL
while(!endloop){
  result[x] <<- tryCatch({
    readWorksheetFromFile(demoExcelFile,sheet=x)
    x<<-x+1
  }, error = function(e) {
    endloop<<-T
  })
}

注意:我打开使用其他软件包,我只是找不到另一个在64位Linux Mint上可靠运行的软件包

3 个答案:

答案 0 :(得分:1)

使用readxl包,它具有列出工作表名称的功能。

library(readxl)
library(purrr)

# get the sheet names
sheetnames  <- excel_sheets("path/to/myfile.xlsx")

# loop through them and read each sheet into an item in a list.
# alternatively, use lapply() instead of map()
listofsheets <- map(sheetnames, ~ read_excel("path/to/myfile.xlsx", sheet = .x))

答案 1 :(得分:0)

我建议使用tidyverse的readxl。你可以这样写:

library(readxl)
sheets <- excel_sheets("insert_filepath/workbook.xlsx")

data <- list()
for (i in 1:length(sheets)) {
  data[[i]] <- read_excel("insert_filepath/workbook.xlsx", sheet = sheets[i])
}

因为我没有您的Excel文件,所以我无法准确地重现您的数据。但这应该是一个通用的解决方案,可以在Excel文件中查找所有工作表名称,然后遍历每个工作表并将其读入名为“数据”的列表

答案 2 :(得分:0)

require(XLConnect)

# Load workbook
wb <- loadWorkbook(system.file("demoFiles/multiregion.xlsx", package = "XLConnect"))

# Read all worksheets into a list of data.frames
listOfDfs <- readWorksheet(wb, sheet = getSheets(wb))