当存在excel文件或工作表时,如何在R中使用write.xlsx

当存在excel文件或工作表时,如何在R中使用write.xlsx,r,excel,openxlsx,R,Excel,Openxlsx,我正在尝试使用openxlsx::write.xlsx将结果写入R中的Excel电子表格 如果文件存在并且要添加新工作表,我可以使用append=T。是否有任何方法可以自动检查文件,而不是使用if来检查文件 如果文件和工作表都存在并且要更新此工作表,我应该如何覆盖结果?谢谢 您可以检查工作表之前是否存在,如果存在,请将其删除,如果不存在,请将其附加到现有文件。如果不存在,此命令还将创建文件 library(xlsx) path <- "testing.xlsx" sheet_name =

我正在尝试使用
openxlsx::write.xlsx
将结果写入R中的Excel电子表格

  • 如果文件存在并且要添加新工作表,我可以使用
    append=T
    。是否有任何方法可以自动检查文件,而不是使用if来检查文件

  • 如果文件和工作表都存在并且要更新此工作表,我应该如何覆盖结果?谢谢


  • 您可以检查工作表之前是否存在,如果存在,请将其删除,如果不存在,请将其附加到现有文件。如果不存在,此命令还将创建文件

    library(xlsx)
    
    path <- "testing.xlsx"
    sheet_name = "new_sheet"
    
    data <-
      data.frame(
        B = c(1, 2, 3, 4)
      )
    
    if(sheet_name %in% names(getSheets(loadWorkbook(path)))){
      wb <- loadWorkbook(path)
      removeSheet(wb, sheetName = sheet_name)
      saveWorkbook(wb, path)
    }
    
    write.xlsx(data, path, sheetName = sheet_name, append = TRUE)
    
    库(xlsx)
    
    path您可以检查工作表之前是否存在,如果存在,则将其删除,如果不存在,则将其附加到现有文件。如果该文件不存在,此命令还将创建该文件

    library(xlsx)
    
    path <- "testing.xlsx"
    sheet_name = "new_sheet"
    
    data <-
      data.frame(
        B = c(1, 2, 3, 4)
      )
    
    if(sheet_name %in% names(getSheets(loadWorkbook(path)))){
      wb <- loadWorkbook(path)
      removeSheet(wb, sheetName = sheet_name)
      saveWorkbook(wb, path)
    }
    
    write.xlsx(data, path, sheetName = sheet_name, append = TRUE)
    
    库(xlsx)
    
    path您可以检查工作表之前是否存在,如果存在,则将其删除,如果不存在,则将其附加到现有文件。如果该文件不存在,此命令还将创建该文件

    library(xlsx)
    
    path <- "testing.xlsx"
    sheet_name = "new_sheet"
    
    data <-
      data.frame(
        B = c(1, 2, 3, 4)
      )
    
    if(sheet_name %in% names(getSheets(loadWorkbook(path)))){
      wb <- loadWorkbook(path)
      removeSheet(wb, sheetName = sheet_name)
      saveWorkbook(wb, path)
    }
    
    write.xlsx(data, path, sheetName = sheet_name, append = TRUE)
    
    库(xlsx)
    
    path您可以检查工作表之前是否存在,如果存在,则将其删除,如果不存在,则将其附加到现有文件。如果该文件不存在,此命令还将创建该文件

    library(xlsx)
    
    path <- "testing.xlsx"
    sheet_name = "new_sheet"
    
    data <-
      data.frame(
        B = c(1, 2, 3, 4)
      )
    
    if(sheet_name %in% names(getSheets(loadWorkbook(path)))){
      wb <- loadWorkbook(path)
      removeSheet(wb, sheetName = sheet_name)
      saveWorkbook(wb, path)
    }
    
    write.xlsx(data, path, sheetName = sheet_name, append = TRUE)
    
    库(xlsx)
    
    path这里是一个openxlsx的答案。为了演示,我们需要一些数据

    ## Create a simple test file 
    library(openxlsx)
    hs <- createStyle(textDecoration = "Bold")
    l <- list("IRIS" = iris, "MTCARS" = mtcars)
    write.xlsx(l, file = "TestFile.xlsx", borders = "columns", headerStyle = hs)
    
    您可以检查工作簿中是否存在该选项卡(工作表)

    ## Check available sheets
    getSheetNames("TestFile.xlsx")
    
    问题2的步骤:
    1.将文件读入工作簿对象。
    2.将要修改的工作表中的数据拉入数据框。
    3.将data.frame修改为taste
    4.将数据保存回工作簿中
    5.将工作簿保存到磁盘
    为了得到一个简单的示例,让我们创建一个简单的测试文件

    ## Load existing file
    wb = loadWorkbook("TestFile.xlsx")
    
    ## Pull all data from sheet 1
    Data = read.xlsx(wb, sheet=1)
    
    ## Change a single element for demonstration
    ## ** Beware!! **    Because of the header,
    ##   the 2,2 position in the data 
    ##   is row 3 column 2 in the spreadsheet
    Data[2,2] = 1492
    
    ## Put the data back into the workbook
    writeData(wb, sheet=1, Data)
    
    ## Save to disk
    saveWorkbook(wb, "TestFile.xlsx", overwrite = TRUE)
    
    您可以打开电子表格并检查是否已进行更改

    如果您想完全更改工作表(如您的评论), 您只需删除旧工作表,然后将其替换为新工作表即可 使用相同的名称

    removeWorksheet(wb, "IRIS")
    addWorksheet(wb, "IRIS")
    NewData = data.frame(X1=1:4, X2= LETTERS[1:4], X3=9:6)
    writeData(wb, "IRIS", NewData)
    saveWorkbook(wb, "TestFile.xlsx", overwrite = TRUE)
    

    下面是一个openxlsx的答案。为了演示,我们需要一些数据

    ## Create a simple test file 
    library(openxlsx)
    hs <- createStyle(textDecoration = "Bold")
    l <- list("IRIS" = iris, "MTCARS" = mtcars)
    write.xlsx(l, file = "TestFile.xlsx", borders = "columns", headerStyle = hs)
    
    您可以检查工作簿中是否存在该选项卡(工作表)

    ## Check available sheets
    getSheetNames("TestFile.xlsx")
    
    问题2的步骤:
    1.将文件读入工作簿对象。
    2.将要修改的工作表中的数据拉入数据框。
    3.将data.frame修改为taste
    4.将数据保存回工作簿中
    5.将工作簿保存到磁盘
    为了得到一个简单的示例,让我们创建一个简单的测试文件

    ## Load existing file
    wb = loadWorkbook("TestFile.xlsx")
    
    ## Pull all data from sheet 1
    Data = read.xlsx(wb, sheet=1)
    
    ## Change a single element for demonstration
    ## ** Beware!! **    Because of the header,
    ##   the 2,2 position in the data 
    ##   is row 3 column 2 in the spreadsheet
    Data[2,2] = 1492
    
    ## Put the data back into the workbook
    writeData(wb, sheet=1, Data)
    
    ## Save to disk
    saveWorkbook(wb, "TestFile.xlsx", overwrite = TRUE)
    
    您可以打开电子表格并检查是否已进行更改

    如果您想完全更改工作表(如您的评论), 您只需删除旧工作表,然后将其替换为新工作表即可 使用相同的名称

    removeWorksheet(wb, "IRIS")
    addWorksheet(wb, "IRIS")
    NewData = data.frame(X1=1:4, X2= LETTERS[1:4], X3=9:6)
    writeData(wb, "IRIS", NewData)
    saveWorkbook(wb, "TestFile.xlsx", overwrite = TRUE)
    

    下面是一个openxlsx的答案。为了演示,我们需要一些数据

    ## Create a simple test file 
    library(openxlsx)
    hs <- createStyle(textDecoration = "Bold")
    l <- list("IRIS" = iris, "MTCARS" = mtcars)
    write.xlsx(l, file = "TestFile.xlsx", borders = "columns", headerStyle = hs)
    
    您可以检查工作簿中是否存在该选项卡(工作表)

    ## Check available sheets
    getSheetNames("TestFile.xlsx")
    
    问题2的步骤:
    1.将文件读入工作簿对象。
    2.将要修改的工作表中的数据拉入数据框。
    3.将data.frame修改为taste
    4.将数据保存回工作簿中
    5.将工作簿保存到磁盘
    为了得到一个简单的示例,让我们创建一个简单的测试文件

    ## Load existing file
    wb = loadWorkbook("TestFile.xlsx")
    
    ## Pull all data from sheet 1
    Data = read.xlsx(wb, sheet=1)
    
    ## Change a single element for demonstration
    ## ** Beware!! **    Because of the header,
    ##   the 2,2 position in the data 
    ##   is row 3 column 2 in the spreadsheet
    Data[2,2] = 1492
    
    ## Put the data back into the workbook
    writeData(wb, sheet=1, Data)
    
    ## Save to disk
    saveWorkbook(wb, "TestFile.xlsx", overwrite = TRUE)
    
    您可以打开电子表格并检查是否已进行更改

    如果您想完全更改工作表(如您的评论), 您只需删除旧工作表,然后将其替换为新工作表即可 使用相同的名称

    removeWorksheet(wb, "IRIS")
    addWorksheet(wb, "IRIS")
    NewData = data.frame(X1=1:4, X2= LETTERS[1:4], X3=9:6)
    writeData(wb, "IRIS", NewData)
    saveWorkbook(wb, "TestFile.xlsx", overwrite = TRUE)
    

    下面是一个openxlsx的答案。为了演示,我们需要一些数据

    ## Create a simple test file 
    library(openxlsx)
    hs <- createStyle(textDecoration = "Bold")
    l <- list("IRIS" = iris, "MTCARS" = mtcars)
    write.xlsx(l, file = "TestFile.xlsx", borders = "columns", headerStyle = hs)
    
    您可以检查工作簿中是否存在该选项卡(工作表)

    ## Check available sheets
    getSheetNames("TestFile.xlsx")
    
    问题2的步骤:
    1.将文件读入工作簿对象。
    2.将要修改的工作表中的数据拉入数据框。
    3.将data.frame修改为taste
    4.将数据保存回工作簿中
    5.将工作簿保存到磁盘
    为了得到一个简单的示例,让我们创建一个简单的测试文件

    ## Load existing file
    wb = loadWorkbook("TestFile.xlsx")
    
    ## Pull all data from sheet 1
    Data = read.xlsx(wb, sheet=1)
    
    ## Change a single element for demonstration
    ## ** Beware!! **    Because of the header,
    ##   the 2,2 position in the data 
    ##   is row 3 column 2 in the spreadsheet
    Data[2,2] = 1492
    
    ## Put the data back into the workbook
    writeData(wb, sheet=1, Data)
    
    ## Save to disk
    saveWorkbook(wb, "TestFile.xlsx", overwrite = TRUE)
    
    您可以打开电子表格并检查是否已进行更改

    如果您想完全更改工作表(如您的评论), 您只需删除旧工作表,然后将其替换为新工作表即可 使用相同的名称

    removeWorksheet(wb, "IRIS")
    addWorksheet(wb, "IRIS")
    NewData = data.frame(X1=1:4, X2= LETTERS[1:4], X3=9:6)
    writeData(wb, "IRIS", NewData)
    saveWorkbook(wb, "TestFile.xlsx", overwrite = TRUE)
    


    这可能很有用:.
    write.xlsx
    来自哪个包?该函数不在base中R@samadhi谢谢在当前代码中,使用了openxlsx包。要使用xlsx,我需要分离,然后再次连接。我很好奇这两个软件包之间有什么区别?@IceCreamToucan它来自openxlsx。这可能很有用:.
    write.xlsx
    来自哪个软件包?该函数不在base中R@samadhi谢谢在当前代码中,使用了openxlsx包。要使用xlsx,我需要分离,然后再次连接。我很好奇这两个软件包之间有什么区别?@IceCreamToucan它来自openxlsx。这可能很有用:.
    write.xlsx
    来自哪个软件包?该函数不在base中R@samadhi谢谢在当前代码中,使用了openxlsx包。要使用xlsx,我需要分离,然后再次连接。我很好奇这两个软件包之间有什么区别?@IceCreamToucan它来自openxlsx。这可能很有用:.
    write.xlsx
    来自哪个软件包?该函数不在base中R@samadhi谢谢在当前代码中,使用了openxlsx包。要使用xlsx,我需要分离,然后再次连接。我很好奇这两个软件包之间有什么区别?@IceCreamToucan它来自openxlsx。谢谢Nareman。在当前代码中,使用了openxlsx包。有什么理由选择一个而不是另一个吗?我是从别的地方得到代码的。我真的不知道哪一个更好。也许这是一个向社区中的其他人询问此类问题的电话。@NaremanDarwish xlsx软件包要求在您的系统上安装Java v 1.6或更高版本,而openxlsx则不需要。谢谢Nareman。在当前代码中,使用了openxlsx包。有什么理由选择一个而不是另一个吗?我是从别的地方得到代码的。我真的不知道哪一个更好。也许这是一个询问suc的电话