我正在使用 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)
正如评论中的对话所示,OP正在将数据从R写入Excel。 因此,解决他们问题的方法就是写
setColWidths(output, "2024 Analysis", cols = 1:ncol(df), widths="auto")
其中
df
是其内容正在写入当前工作表的 data.frame
。