如何在R中导出Excel文件?

问题描述

我有一个包含8个工作表的Excel电子表格。每个工作表都有不同的数据,我有一个R代码来更新它们。

我的问题是:是否可以导出.xlsx中的R文件,以仅更新Excel文件中的一个特定工作表,而无需将整个电子表格替换为新文件

在先前的尝试中,我使用openxlsx包创建了一个全新的文件,但这并不能解决我的问题。

解决方法

您可以使用以下工作流程来实现:

# 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',则会引发错误。

,

您可以使用以下代码解决此问题。

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)