如何在R中按相似信息导出含合并单元格的XLSX文件
批量合并XLSX中同国家的单元格(R实现)
你可以使用openxlsx包实现批量合并相同国家的单元格,无需手动指定单元格位置,具体操作如下:
1. 安装并加载依赖包
# 首次使用时安装包 install.packages("openxlsx") # 加载包 library(openxlsx)
2. 准备数据
library(tibble) df <- tibble( country = c('Canada','Canada','Canada','Argentina','Argentina','Chile'), city = c('Montreal','Ottawa','Toronto','Cordoba','Mendoza','Santiago') )
3. 计算合并单元格的范围
按country分组,自动计算每组对应的Excel单元格行范围(注意Excel表头占第1行,数据行从第2行开始):
merge_ranges <- df %>% group_by(country) %>% summarise( start_row = cur_group_rows()[1] + 1, # +1偏移表头行 end_row = cur_group_rows()[n()] + 1, .groups = "drop" ) %>% mutate(range = paste0("A", start_row, ":A", end_row)) # 国家列对应Excel的A列
4. 创建工作簿并设置合并规则
# 新建工作簿 wb <- createWorkbook() # 添加工作表 addWorksheet(wb, sheetName = "countries") # 写入数据到工作表 writeData(wb, sheet = "countries", x = df) # 批量应用合并单元格规则 for (r in merge_ranges$range) { mergeCells(wb, sheet = "countries", cols = 1, rows = getRows(r)) } # 可选:设置合并单元格垂直居中对齐 addStyle(wb, sheet = "countries", style = createStyle(valign = "center"), rows = 2:(nrow(df)+1), cols = 1)
5. 保存XLSX文件
saveWorkbook(wb, "merged_countries.xlsx", overwrite = TRUE)
执行完成后,生成的merged_countries.xlsx文件中,同一国家的单元格会自动合并,且内容垂直居中,完全符合需求。
内容的提问来源于stack exchange,提问作者uow
相关产品推荐
相关产品推荐

