【问题标题】:How to Auto Size column in excel to multiple sheets using openxlsx in R如何使用R中的openxlsx将excel中的列自动调整为多个工作表
【发布时间】:2019-12-27 19:49:04
【问题描述】:

我有一个包含 15 个工作表的 Excel 文档,每月更新一次。目前,我一直在阅读文档并对其进行如下操作

sheetNames <- openxlsx::getSheetNames("myDoc.xlsx")
oldData <- lapply(sheetNames, function(x) openxlsx::readWorkbook("YouTube Search Results.xlsx", 
                                                                 sheet=x, skipEmptyRows = FALSE))
names(oldData) <- sheetNames

finalDF <- Map(bind_rows, oldData, newData)

openxlsx::write.xlsx(finalDF, "YouTube Search Results.xlsx", overwrite = TRUE)

这很适合我根据列表newData 的元素更新每张工作表。

我的问题是我想调整所有工作表上所有列的大小。我目前不能这样做,因为我没有在oldData 中创建工作簿对象,而setColWidths() 需要一个工作簿对象。我是否必须更改读取数据的方式,或者是否有其他方法可以在不这样做的情况下设置列宽?

我见过R - Autofit Excel column width之类的回复,但他们并不是指对多张纸进行处理

【问题讨论】:

    标签: r excel xlsx openxlsx


    【解决方案1】:

    要完全控制输出格式,您需要创建一个工作簿对象。但是,对于基本格式,write.xlsx 允许您传递一些额外的格式参数,包括自动调整列宽以适应数据的宽度(有关详细信息,请参阅帮助)。您只需将colWidths="auto" 添加到write.xlsx。这是一个适应您的代码的可重现示例:

    library(openxlsx)
    library(tidyverse)
    
    # Create sample "old" and "new" Excel files
    dl = list(mtcars=mtcars, iris=iris)
    write.xlsx(dl, "myDoc.xlsx")
    write.xlsx(dl, "YouTube Search Results.xlsx")
    
    # Load old data add new data, and write to a new file
    sheetNames <- getSheetNames("myDoc.xlsx")
    oldData <- lapply(sheetNames, function(x) readWorkbook("YouTube Search Results.xlsx", 
                                                           sheet=x, skipEmptyRows = FALSE))
    newData <- lapply(sheetNames, function(x) readWorkbook("myDoc.xlsx", 
                                                           sheet=x, skipEmptyRows = FALSE))
    finalDF <- Map(bind_rows, oldData, newData)
    
    write.xlsx(finalDF, "YouTube Search Results Updated.xlsx", colWidths="auto")
    

    【讨论】:

    • 效果很好!不过,我决定只创建工作簿对象,因为它还为我提供了更大的格式化灵活性
    猜你喜欢
    • 2023-03-16
    • 2017-08-27
    • 2016-03-14
    • 2020-11-28
    • 2022-01-04
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多