使用 setColWidths() 相对调用工作表中的所有列进行自动调整大小

问题描述 投票:0回答:1

我正在使用 openxlsx 包准备 Excel 工作簿,并且我想使用

setColWidths()
自动调整每个工作表中的列大小。由于我有多个工作表,并且我希望我的代码是相对的,因此我需要编写
cols=
参数来调用工作表中的所有列以进行自动调整大小。但是,我似乎只能使用特定的索引来填充该参数,并且该函数似乎需要该参数。

现在,我当然可以计算一张工作表中有多少列,并调用该特定索引值,但由于该项目涉及许多工作表,这很快就会变得乏味,并且代码将无法适应不同的工作表。有没有一种相对的方法可以在

setColWidths()
内调用工作表中的所有列?

下面是我的虚拟数据供参考(本例中只有一张)。此虚拟数据将产生所需的输出,但

cols=
参数与此处所写的不是相对的。有没有相对的方法来调用工作表中的所有列?

library(tidyverse)
library(readxl)
library(writexl)
library(openxlsx)

#### Sample Data ####

month_2024<-structure(list(`CAL MONTH` = c("Jan 2024", "Feb 2024", "Mar 2024", 
"Apr 2024", "May 2024", "Jun 2024", "Jul 2024", "Aug 2024", "Sep 2024", 
"Oct 2024", "Total"), `Total Number of Interactions` = c(17L, 
11L, 18L, 9L, 15L, 29L, 28L, 16L, 10L, 13L, 166L)), row.names = c(NA, 
-11L), class = "data.frame")

####
                       
output<-createWorkbook()

addWorksheet(output,"2024 Analysis")

writeData(output, "2024 Analysis", `month_2024`, 
          startCol = 1, 
          startRow = 1, 
          colNames = TRUE, 
          rowNames = FALSE, 
          keepNA = TRUE)

setHeaderFooter(output, 
                sheet = "2024 Analysis", 
                header = c(NA, "2024 Analysis", NA), 
                footer = c("Data Window: January 1st, 2024 - &[Date] unless otherwise stated", NA, NA))

setColWidths(output, "2024 Analysis", cols = 1:2, widths="auto")

saveWorkbook(output, "Monthly Reporting.xlsx", overwrite = TRUE)
r excel openxlsx
1个回答
0
投票

正如评论中的对话所示,OP正在将数据从R写入Excel。 因此,解决他们问题的方法就是写

setColWidths(output, "2024 Analysis", cols = 1:ncol(df), widths="auto")

其中

df
是其内容正在写入当前工作表的
data.frame

© www.soinside.com 2019 - 2024. All rights reserved.