2015-02-23 55 views
6

我试图在R中打开一个.xlsb文件,并不断收到类似的错误。如何在R中打开一个.xlsb文件?

有关如何解决此问题而无需下载数据并将其保存在不同的合作伙伴中的任何建议?

read.xlsx(paste(OutputLocation,FileName, sep=""), sheetName = "Master Data") 

错误消息: 错误.jcall( “RJavaTools”, “Ljava /郎/对象;”, “invokeMethod中”,CL,: org.apache.poi.xssf.XLSBUnsupportedException: XLSB二进制工作簿中不支持

rigDataWB<-loadWorkbook(paste(OutputLocation,FileName, sep="")) 

错误消息: 错误:XLSBUnsupportedException(JAVA):.XLSB二进制工作簿中不支持

请注意:

我无法安装Perl库。

我运行64位R.

参考: http://www.milanor.net/blog/?p=779

我的数据是: http://phx.corporate-ir.net/phoenix.zhtml?c=79687&p=irol-reportsother

回答

2

的一种方法是使用ODBC:

require(RODBC) 
if (any(grepl("*.xlsb", odbcDataSources(), fixed = TRUE))) { 
    download.file(url = "http://phx.corporate-ir.net/External.File?item=UGFyZW50SUQ9NTcwMjI1fENoaWxkSUQ9MjcxMjIxfFR5cGU9MQ==&t=1", 
       destfile = file.path(tempdir(), "test.xlsb"), 
       mode = "wb") 
    conn <- odbcConnectExcel2007(file.path(tempdir(), "test.xlsb")) 
    df <- sqlFetch(conn, sub("'(.*)\\$'", "\\1", sqlTables(conn)$TABLE_NAME)[4]) # read 4th sheet in the table name list 
    head(df, 10) 
    #            F1   F2   F3  F4  F5 F6 
    # 1           <NA>  <NA>  <NA>  <NA>  <NA> NA 
    # 2           <NA>  <NA>  <NA>  <NA>  <NA> NA 
    # 3           <NA>  <NA>  <NA>  <NA>  <NA> NA 
    # 4           <NA>  <NA>  <NA>  <NA>  <NA> NA 
    # 5 Baker Hughes Gulf of Mexico Oil/Gas Split  <NA>  <NA>  <NA>  <NA> NA 
    # 6           <NA>  <NA>  <NA>  <NA>  <NA> NA 
    # 7           <NA> US Offshore Total\nGoM Gas\nGoM Oil \nGoM NA 
    # 8          1/7/00   127  123  116   7 NA 
    # 9          1/14/00   125  121  116   5 NA 
    # 10          1/21/00   125  121  116   5 NA 
    close(conn) 
} 
+1

只是一个快速的注意,如果你得到一个错误,更新您的Windows驱动程序[这里](https://www.microsoft.com/en-us/download/details。 aspx?displaylang = en&id = 13255)并且解决方案有效。 – hubbs5 2016-11-03 16:36:31

2

库(RODBC)

wb <- "D:\\Data\\Masked Data.xlsb" # Give the file name 
con2 <- odbcConnectExcel2007(wb) 
data <- sqlFetch(con2, "Sheet1$") # Provide name of sheet 
nrow(data)