R语言 为多个excel (.xlsx)表格添加边框
问题描述
我有多个数据框放入一个列表中,然后导出为excel (.xlsx)。
library(openxlsx)
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)
geral <- openxlsx::write.xlsx(listas , file = str_c( "Críticas de Setembro_", format( now(), format = "%d-%m-%Y" ), ".xlsx" ), na = "" )
我将这个放在一个函数里。无论如何,我想要像我已经做的那样导出具有多个工作表的文件,但我想要在每个列中居中数据并给所有行加上边框。这可能吗?
解决方案
这是一个方法:
使用
purrr
包中的
walk2
函数迭代列表中的每个数据帧
- 添加一个名为.x(名称来自列表)的新工作表。
- 把数据帧.y写入工作表中。
- 计算数据帧中的行数。
- 将以前定义的
样式
应用到数据帧中的所有单元格。
library(openxlsx)
library(purrr)
library(ggplot2) # diamonds dataset
# style for borders
style <- createStyle(border = "TopBottomLeftRight", halign = "center", valign = "center")
# fake list
listas <- list(
'Banco geral fevereiro' = mtcars,
'Gestações duplas ou triplas' = iris,
'Duplicidade do nome da mãe' = diamonds
)
# my workbook
my_wb <- createWorkbook()
walk2(names(listas), listas, ~{
addWorksheet(my_wb, .x)
writeData(my_wb, .x, .y)
nr <- nrow(.y)
addStyle(my_wb, .x, style, rows = 1:nr+1, cols = 1:ncol(.y), gridExpand = TRUE)
})
saveWorkbook(my_wb, "my_file.xlsx", overwrite = TRUE)