2015-02-23 39 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)