Как экспортировать файл Excel в R?

У меня есть электронная таблица Excel с 8 листами. Каждый рабочий лист имеет разные данные, и у меня есть код R для их обновления.

Мой вопрос: есть ли способ экспортировать файл .xlsx в R, чтобы обновить только один конкретный рабочий лист в моем файле Excel без замены всей электронной таблицы новым файлом?

В моих предыдущих попытках с пакетом openxlsx я просто создал совершенно новый файл, который не решает мою проблему.


person Alexandre Sanches    schedule 05.11.2020    source источник


Ответы (2)


Вы можете решить эту проблему, используя приведенный ниже код.

library(migrittr)
library(openxslx)    

file_path = '/home/user/Downloads/my_sheet.xlsx'

df <- data.frame()

file_path %>%     

          loadWorkbook() %T>%
    
          removeWorksheet(sheet = "Sheet1") %T>%
 
          addWorksheet(sheetName = "Sheet1") %T>%
 
          writeData(sheet = "Sheet1", x = df) %T>%

          saveWorkbook(., file = '/home/user/Downloads/my_sheet.xlsx', overwrite = T)
person Brutalroot    schedule 05.11.2020
comment
Почему вы использовали %T>% вместо %>%? - person Alexandre Sanches; 06.11.2020
comment
Эта тема хорошо объясняет использование T в %T›% -> stackoverflow.com/questions/44879322/ - person Brutalroot; 06.11.2020

Вы можете достичь этого, используя следующий рабочий процесс:

# load environment
library(xlsx)
# define file path
file_path = '/home/user/Downloads/my_sheet.xlsx'
# load file as a workbook
file = loadWorkbook(file_path)
# check the sheets in the file
tbls = getSheets(file)
# remove the sheet you want to change
removeSheet(file, sheetName = "Sheet1")
# start a new from scratch
new_sheet = createSheet(file, sheetName = "Sheet1")
# create a dataframe
df = data.frame()
# link the dataframe to the new sheet
addDataFrame(df, new_sheet, row.names = FALSE)
# save the workbook/file
saveWorkbook(file, file_path)

Вместо создания нового фрейма данных с нуля вы можете импортировать старый лист в качестве фрейма данных с помощью read.xlsx(file, sheetIndex, sheetName).

Внимание: выдается ошибка, если вы используете короткие пути к файлам, например '~/Downloads/my_sheet.xlsx'.

person rodolfoksveiga    schedule 05.11.2020
comment
В каком пакете находится функция getSheets? - person Alexandre Sanches; 05.11.2020
comment
я отредактировал свой ответ и добавил library(xlsx). все функции встроены в пакет xlsx. проверьте это и дайте мне знать, если это работает для вас! - person rodolfoksveiga; 05.11.2020