Как открыть файл.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)