在R中为多工作表Excel文件添加边框并设置内容居中
实现多工作表Excel的居中对齐与全边框样式
完全可以实现,借助openxlsx的样式创建和批量应用功能就能搞定,以下是修改后的完整代码:
library(openxlsx) library(stringr) library(lubridate) # 你的DataFrame列表(保持原代码不变) listas <- list('Banco geral fevereiro' = dados, 'Gestações duplas ou triplas' = duplas_triplas, 'Duplicidade do nome da mãe' = dupl_nomae, 'menos22s mais1500g' = menos22s_mais1500g, '22a27s mais2000g' = e22a27s_mais2000g, '28a31s mais2700g' = e28a31s_mais2700g, 'Mês início PN x n° de consulta' = mes_prenat, 'n° consultas PN branco ou ign' = pn_ign, 'Mês de inicio PN em branco ign' = mes_pn_ign, 'Tipo de parto em branco' = tp_parto, 'Tipo de gravidez em branco' = tp_grav, 'Duração da gestação não informa' = sem_gest, "Apgar 1 e 5 em branco" = apgar, 'Escolaridade da mãe n informada' = escmae, 'Cesarea assistida por enfermeir' = ces_enf, 'Parto assistido em branco' = parto_ass, 'Número de filhos > 13' = fil_13) # 1. 创建统一样式:居中对齐 + 全边框 centered_border_style <- createStyle( textAlign = "center", # 文本居中 border = "all", # 所有边框(上下左右) borderColour = "black" # 边框颜色为黑色 ) # 2. 创建工作簿对象 wb <- createWorkbook() # 3. 循环遍历列表,逐个添加工作表并应用样式 for (sheet_name in names(listas)) { # 添加工作表 addWorksheet(wb, sheetName = sheet_name) # 获取当前DataFrame df <- listas[[sheet_name]] # 写入数据(包含表头) writeData(wb, sheet = sheet_name, x = df, na = "") # 计算需要应用样式的单元格范围:从第1行(表头)到最后一行,所有列 row_range <- 1:(nrow(df) + 1) # +1是因为表头占了一行 col_range <- 1:ncol(df) # 应用样式到整个数据区域 addStyle(wb, sheet = sheet_name, style = centered_border_style, rows = row_range, cols = col_range, gridExpand = TRUE) } # 4. 保存工作簿 output_file <- str_c("Críticas de Setembro_", format(now(), "%d-%m-%Y"), ".xlsx") saveWorkbook(wb, file = output_file, overwrite = TRUE)
关键说明:
createStyle:一次性定义好需要的样式规则,避免重复代码- 循环处理每个工作表:确保每个sheet都应用相同的样式规则
addStyle的gridExpand=TRUE:会自动把样式扩展到指定的行和列范围内的所有单元格,不用逐个单元格设置- 注意加载
stringr和lubridate包:因为原代码用到了str_c和now()函数
内容的提问来源于stack exchange,提问作者Lana Meijinhos
相关产品推荐
相关产品推荐

