рекомендации

вторник, 24 марта 2020 г.

XLConnect: чтение, запись и редактирование файлов Microsoft Excel из R


XLConnect - это пакет, который позволяет читать, писать и редактировать файлы Microsoft Excel из R.

Для чтения и записи файлов Excel не требуется установка Microsoft Excel или других специальных драйверов. Единственное требование - это последняя версия Java Runtime Environment (JRE).


Чтобы начать, посмотрите описание пакета, многочисленные демонстрации, доступные через demo(package = "XLConnect") или просмотрите справочное руководство.

Установка

Системные требования

R, version 2.10.0 или выше
Java Runtime Environment (JRE), version 6.0 или выше

если у вас нет JRE на вашем компьютере, вы должны установить его:

в Linux/Ubuntu используйте команду:

apt-get install openjdk-6-jdk

Установка пакета

XLConnect можно легко установить с помощью команды install.packages () в сеансе R:

install.packages("XLConnect")

Запись файлов Excel:

#загрузка пакета
require(XLConnect)
 
#создание рабочей книги Excel. Могут использоваться оба формата: .xls и .xlsx
wb = loadWorkbook("XLConnectExample1.xlsx", create = TRUE)
 
#Создание листов в рабочей книге Excel 
createSheet(wb, name = "chickSheet")
 
#запись в листы рабочей книги Excel: 
#запись данных data frame ChickWeight в chickSheet
writeWorksheet(wb, ChickWeight, sheet = "chickSheet", startRow = 3, startCol = 4)
 
#сохранение рабочей книги в файл:
saveWorkbook(wb)



Запись листа одной командой

Четыре строки кода, представленные в предыдущем примере, можно заменить одним вызовом функции writeWorksheetToFile():

require(XLConnect)
writeWorksheetToFile("XLConnectExample2.xlsx", data = ChickWeight, 
                                 sheet = "chickSheet", startRow = 3, startCol = 4)

writeWorksheetToFile() загружает рабочую книгу, создает лист и, наконец, сохраняет рабочую книгу. Когда вам нужно записать только один лист в файл Excel, это, вероятно, лучший выбор. Однако если вам нужно написать больше листов, использование функций, представленных в предыдущем примере, будет более эффективным. Это потому, что вызов writeWorksheetToFile() несколько раз будет открывать, записывать и закрывать файл Excel при каждом вызове. Использование функций в первом примере, напротив, позволит вам открыть рабочую книгу, выполнить несколько операций с ней и только затем закрыть ее.

Чтение из листа Excel

Для этого мы будем использовать файл, созданный в приведенном выше примере. Мы устанавливаем аргумент endRow равным 10, чтобы ограничить результат. Мы устанавливаем остальные аргументы, определяющие границы как 0, чтобы они задавались автоматически.
Обратите внимание, что в качестве альтернативы присвоению аргументу sheet имени листа, из которого мы хотим прочитать, "chickSheet", мы также можем указать его с индексом листа, как sheet = 1.

Базовые функции

#Загрузка пакета
require(XLConnect)
 
#Загрузка рабочей книги Excel. Могут использоваться файлы .xls и .xlsx.
wb = loadWorkbook("XLConnectExample1.xlsx", create = TRUE)
 
#чтение листов рабочей книги Excel 
data = readWorksheet(wb, sheet = "chickSheet", startRow = 0, endRow = 10,
startCol = 0, endCol = 0)
 
#вывод данных
data

weight Time Chick Diet
1     42    0     1    1
2     51    2     1    1
3     59    4     1    1
4     64    6     1    1
5     76    8     1    1
6     93   10     1    1
7    106   12     1    1

Чтение из листа Excel одним вызовом

require(XLConnect)
data = readWorksheetFromFile("XLConnectExample1.xlsx", sheet = "chickSheet", 
startRow = 0, endRow = 10, startCol = 0, endCol = 0)

Добавление изображения на лист, используя именованный диапазон

# Загружаем рабочую книгу (создаем, если она не существует)
wb = loadWorkbook("add_image_to_excel.xls", create=TRUE)
 
# создаем лист с именем 'boxplot'
createSheet(wb, name = "boxplot")
 
# Создаем именованный диапазон 'boxplot', ссылающийся на лист 'boxplot'
createName(wb, name = "boxplot", formula = "boxplot!$B$2")
 
# Создаем график в R на устройстве png
png(filename = "boxplot.png", width = 800, height = 600)
boxplot(count ~ spray, data = InsectSprays, col = "lightgray")
dev.off()
 
# Записываем изображение в именованный диапазон
addImage(wb, filename = "boxplot.png", name="boxplot", originalSize = TRUE)
 
# Сохраняем рабочую книгу
saveWorkbook(wb)

В результате получаем следующий график, записанный в файл Excel.


Комментариев нет:

Отправить комментарий