咨询openxlsx2是否支持批量创建分组迷你图功能
openxlsx2批量创建迷你图的正确方法
openxlsx2完全支持一次性创建一组迷你图,和Excel的批量编辑逻辑一致,你的代码问题出在数据范围与目标范围的匹配上,调整后就能实现需求。
问题分析
你用AirPassengers拆分得到的t2是12行(年份)×12列(月份)的数据,add_data默认从A1单元格开始写入,所以数据实际占据A1:L12区域,但你的代码里写的是A2:L13,目标范围M2:M13也超出了数据行数,导致迷你图无法正确生成。
修正后的代码
# 准备数据 t1 <- AirPassengers t2 <- do.call(cbind, split(t1, cycle(t1))) dimnames(t2) <- dimnames(.preformat.ts(t1)) # 创建工作簿并写入数据 wb <- wb_workbook()$ add_worksheet("Sheet 1")$ add_data(x = t2) # 数据从A1开始,对应区域A1:L12 # 批量创建迷你图:每行数据对应M列的一个迷你图 sparklines <- create_sparklines( sheet = "Sheet 1", data = "A1:L12", # 数据源区域 location = "M1:M12", # 迷你图放置区域 markers = "1" # 显示数据标记点 ) # 添加迷你图到工作簿 wb$add_sparklines(sparklines = sparklines) # 保存验证 wb_save(wb, "batch_sparklines.xlsx")
关键说明
create_sparklines本身支持范围对范围的批量映射,不需要用c()包裹,只要数据源区域和目标区域的单元格数量匹配,就能自动生成一组迷你图- 默认按行匹配(
by_row = TRUE),即目标区域的每个单元格对应数据源区域的一行数据;如果需要按列生成,只需添加by_row = FALSE参数 - 生成的迷你图在Excel中可以批量选中(比如选中
M1:M12),统一修改样式、标记点等,和原生Excel迷你图的编辑逻辑完全一致
内容的提问来源于stack exchange,提问作者Heather Hays
相关产品推荐
相关产品推荐

