Как открыть файл.xlsb в R?

Я пытаюсь открыть файл.xlsb в R и продолжаю получать похожие ошибки.

Любые рекомендации о том, как решить эту проблему, не загружая данные и сохраняя их в другом формате?

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

Сообщения об ошибках: Ошибка в.jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,: org.apache.poi.xssf.XLSBUnsupportedException: двоичные рабочие книги.XLSB не поддерживаются

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

Сообщения об ошибках: Ошибка: XLSBUnsupportedException (Java): двоичные книги.XLSB не поддерживаются

Пожалуйста, обратите внимание:

Я не могу установить библиотеки Perl.

Я бегу 64bit R.

Ссылка: http://www.milanor.net/blog/?p=779

Мои данные от: http://phx.corporate-ir.net/phoenix.zhtml?c=79687&p=irol-reportsother

6 ответов

Библиотека (RODBC)

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

Одним из способов может быть использование 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) 
}

readxlsb пакет может читать двоичные файлы Excel (.xlsb) в R. Вот некоторая информация, взятая из виньеток пакета:

read_xlsb(path, sheet, range, col_names, col_types, na, trim_ws, skip, ...)

лист:

Либо имя, либо индекс листа для чтения. Индекс первого листа равен 1. Если имя листа встроено в аргумент диапазона или подразумевается, если диапазон является именованным диапазоном, то этот аргумент игнорируется.

диапазон:

диапазон можно указать как

  • Именованный диапазон. Именованные диапазоны не чувствительны к регистру
  • Обозначение в Sheet!A1
  • В нотации Sheet!R1C1
  • Как объект cellranger::cell_limits

col_names

  • ИСТИНА: первая строка используется для имен столбцов. Пустые ячейки приводят к имени столбца в форме 'column.i'
  • ЛОЖЬ: имена столбцов будут 'column.i'
  • Вектор символов: вектор, содержащий имена столбцов.

col_types

Может подразумеваться из электронной таблицы или указываться дополнительно. При указании типов параметры

  • "Логический" (или "логический"), "числовой" (или "двойной"), "целочисленный", "дата" и "строка" (или "символ")
  • Используйте "пропустить" (или "игнорировать"), чтобы пропустить столбец.

на

Строка символов, интерпретируемая как NA. Это не влияет на предполагаемый тип данных для столбца.

trim_ws

Следует ли удалять начальные и конечные пробелы из символьных строк?

пропускать

Количество строк, которые нужно пропустить перед чтением данных.

library(readxlsb)

res = read_xlsb(path = system.file("extdata", "TestBook.xlsb", package = "readxlsb"), 
                range = "PORTFOLIO", 
                debug = TRUE)

ls(res$env)
#> [1] "content"      "named_ranges" "sheets"       "stream"

res$env$named_ranges
#>             name                     range sheet_idx first_column first_row
#> 1   INFO_RELEASE          FirstSheet!$A$11         0            1        11
#> 2        OUTLOOK 'My SecondTab'!$A$1:$C$13         1            1         1
#> 3      PORTFOLIO      FirstSheet!$A$3:$C$9         0            1         3
#> 4 SAVED_DATETIME          FirstSheet!$C$13         0            3        13
#> 5          TITLE           FirstSheet!$A$1         0            1         1
#>   last_column last_row
#> 1           1       11
#> 2           3       13
#> 3           3        9
#> 4           3       13
#> 5           1        1

Создано 07.07.2020 с помощью пакета REPEX (v0.3.0)

Если вы получаете следующую ошибку в R пытается подключиться к .xlsb:

[RODBC] ERROR: state IM002, code 0, message [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

то вы, вероятно, отсутствуют для установки AccessDatabaseEngine_X64.exe от Microsoft. У меня была эта проблема сегодня, и после установки этого файла у меня больше нет сообщений об ошибках.

Библиотека install.packages("RODBC") (RODBC) dataRead <- "Двоичный 2018-01-01.xlsb" ConnectionObj <-odbc (dataRead)

Приведенный выше код не работает для меня без функции odbcConnectExcel2007 в пакете "RODBC" Ошибка- {xml: code}

ConnectionObj<- odbcConnectExcel2007 (dataRead) Ошибка в odbcConnectExcel2007 (dataRead): не удалось найти функцию "odbcConnectExcel2007" {code}

пытаться

      xl.read.file(file_path, h=T, top.left.cell = "A1") from library(excel.link) 
Другие вопросы по тегам