使用XLConnect读取Excel文件将返回“错误:InvalidFormatException(Java):您的InputStream既不是OLE2流也不是OOXML流”

时间:2017-05-16 08:12:52

标签: r xlconnect

我正在尝试使用XLConnect将一些Excel文件的内容读入R中。这是我的代码的简化版本:

# point to a folder
path <- "/path/to/folder"

# get all the Excel files in that folder
files <- list.files(path, pattern = "*.xlsx")

# create an empty data frame
dat <- data.frame(var.1 = character(), var.2 = numeric())

# load XLConnect
library("XLConnect")

# loop over the files
for (i in seq_along(files)) {
    # read each Excel file
    wb <- loadWorkbook(paste(pfad, files[i], sep = "/"))
    # fill the data frame with data from the Excel file
    dat[i, 1:2] <- readWorksheet(wb, "Table1", startRow = 1, startCol = 1, endRow = 2, endCol = 1, header = FALSE)
    rm(wb)
}

当我使用loadWorkbook(paste(pfad, files[1], sep = "/"))指定时,我可以在单个文件中读取,但是当我使用files[i]循环遍历文件列表时,for循环内的代码会返回以下错误:

Error: InvalidFormatException (Java):
    Your InputStream was neither an OLE2 stream, nor an OOXML stream

我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题与我的代码无关。

我在Excel中打开了该文件夹中的一些文件。在Excel中打开文件时,Excel会创建一个名为&#34;〜$ filename.xlsx&#34;的不可见文件。由于我的正则表达式搜索带有后缀&#34; .xlsx&#34;的文件,因此也找到了这些文件,并且由于这些文件不是电子表格文件,因此XLConnect无法读取它们并引发错误。 / p>

我通过在Excel中关闭这些文件来解决问题。

另一种解决方案是在正则表达式中排除以波浪号开头的文件,例如:

list.files(path, pattern = "^[^~].+\\.xlsx")