您的位置首页 >人工智能 >

AI Agent 对话式制作复杂报表动态合并单元格的四条规则拆解

这个题目涉及 “对话式生成报表” 和 “合并单元格动态合并” 的工程实现,我先查一下原始文章和技术资料。

原文已经找到,是润乾报表与 TERA 智能体的实操记录。我再核实一下合并单元格的技术口径,确认实现要点没有被转述跑偏。

原文(腾讯云开发者社区,作者 “析言”)和润乾官方的合并属性文档我都读完了,机制口径也核对上了。以下是成稿。

2026 年 11 月 13 日,腾讯云开发者社区一篇实操记录给出了一个具体样本:作者用润乾报表设计器(20260916 版)、内置的 rpx-agent-toolkit 技能包和 TERA 智能体,把一份含三个工作表的 Excel(层级架构表 15 行 ×7 列、对照表 22 行 ×2 列、KPI 数据 4 行 ×5 列)交给 Agent,只用一段自然语言需求描述,7 分 24 秒后拿到了三样东西 —— 报表模板 动态合并单元格4.rpx、预览 HTML、以及生成的 Java 源码 DynamicMergeReport4.java,并称 “通过两道校验”。腾讯云这件事的关键不是 “AI 会画表”,而是动态合并单元格这件事第一次被拆成了可以被自然语言描述清楚的规则:哪些字段纵向合并、哪些字段空值向左合并、按什么字段排序保证同值相邻、KPI 用哪个键关联。合并单元格之所以是复杂报表里最难的一段,是因为它本质不是排版,而是数据分组关系的视觉投影 —— 顺序错一步、扩展错一格,整张表就错位。

一、这次对话到底产出了什么

环节输入结果
环境润乾报表设计器 20260916 + rpx-agent-toolkit + TERA技能以 .md 或 zip 形式上传导入
数据组织架构与ID对照表_加工板.xlsx,3 个工作表被拆成 3 个独立数据集,名称与工作表同名
需求一段自然语言,约 200 字包含表头、报头、数据区、合并规则、关联规则、输出文件名
耗时一次对话7 分 24 秒
产物—.rpx 模板 + 预览 HTML + Java 源码

腾讯云

二、为什么合并单元格是这类任务里最难的一段

难点具体表现背后的机制
合并不是独立动作合并结果是 “分组后自然形成” 的,不是先画表再补合并线同值合并只对同一扩展格有效,值不相邻就不合并
依赖排序省、市、区县值相同但要相邻才合并必须先按 5 个字段排序展开,否则同值散落各处
空值要 “往左找”层级越深,右侧字段越空空值合并不是留白,而是向左与同列等宽的格子合并
合并有先后先同值、后空值;多方向按 “向下、向上、向左、向右” 依次执行次序颠倒会吃掉本该合并的区域或产生交叉
禁止交叉会与已合并区域交叉时,宁可不合并同列 / 同行格子只能包含或被包含

润乾这几条合在一起解释了日常最困惑的现象:明明值相同却没合并。原因往往不是配置写错,而是值不相邻、或者合并后会交叉、或者设在静态格上(同值合并对静态格不起作用)。

三、把需求写成 “可执行的规格” 才是关键动作

原文那段需求描述,逐句都能翻译成一条实现指令,这是它能一次跑通的核心:

需求原话(要点)对应的实现口径
3 个工作表生成 3 个独立数据集,名称与表名相同FileDataSetConfig 分别读取三张分表
头标题显示动态合并单元格B1:L1 设 setMergedArea,值 “动态合并单元格”
报头显示层级架构表全部字段名 + KPI 除 ID 外字段7 字段 + 4 字段 = 11 列
数据区按省、市、区县、营业部、网点 5 字段分组隐藏主格用 select(省:省,市:市,…) 排序展开,保证同值相邻
7 个字段值相同时纵向合并全部设 setMergeSame(MS_Y)
区县 / 营业部 / 网点 / 架构 1 / 架构 2 为空时横向向左合并设 setMergeNull(MN_LEFT)
KPI 与层级表按 ID 关联单元格表达式 KPI数据.select(…,ID==层级架构表.架构1)
显示名称而非 ID对照表按 ID 映射显示值

腾讯云值得单独说的是 “隐藏主格” 这一步。报表里的分组格通常是扩展格,它会按数据行数纵向撑开;为了让同值相邻,必须让它在展开前就按层级顺序排好。排序不是美观问题,是合并能否发生的前提。

四、机制拆解:四种合并方式的边界

合并类型方向执行顺序关键约束
同值合并・横向左右相邻同值按行从上到下仅对同一扩展格有效;产生交叉则不合并
同值合并・纵向上下相邻同值按列从左到右同上;这是层级报表的主力
同值合并・双向相邻同值先纵向后横向主要用于交叉报表
空值合并向上 / 向下 / 向左 / 向右全表按 向下→向上→向左→向右空值格找相邻的 “同列等宽” 格合并
两类之间—先同值合并,后空值合并次序不可颠倒

润乾原文里 “纵向同值合并 + 空值向左合并” 的组合,正好对应层级报表的两种视觉需求:上层字段(省、市)用纵向合并表示 “这些行属于同一组”,下层字段(区县以下)用向左合并表示 “这一格被上一层的合并区覆盖”。 两者叠加,才出现预览里 “河北省” 一栏贯通全表、右侧逐级细分的效果。

五、Agent 在这件事上做对了什么

能力证据
把自然语言拆成结构化规格一段描述被拆成数据集、表头、报头、分组、合并、关联六类指令
记住 “先排序再合并” 的隐含前提需求里没写 “要排序”,但实现里出现了分组排序
跨表关联用单元格表达式而非硬编码KPI 按 ID 关联、名称按 ID 映射,都是表达式而非写死值
产出可审查的中间物除模板外还给预览 HTML 与 Java 源码,便于人工核对
自检称 “通过两道校验”

腾讯云第 4 条最有价值:交付源码意味着这条链路不是黑盒。一旦合并结果不对,可以去看是排序错了、合并方向错了,还是关联键错了,而不是只能反复改提示词碰运气。

六、必须防的三个坑

坑表现对策
幻觉数据素材里没有的数字被 “补全”,且看起来合理提示词里强制 “找不到就用 [待补充] 占位,估算值必须标注”,有实测把幻觉从 3 处降到 0 处
范围错位合并区域起止格差一格,整表错位要求交付源码 + 预览,人工核对合并区域坐标
只看预览不看数据版式对了,但 KPI 列对错了行抽几行反查原始 Excel,验证 ID 关联与显示值映射

第二、三个坑在学术基准里也有对应证据:一项面向企业财务表格工作流的基准分析指出,约 25% 的失败来自代码生成错误(脚本语法非法或与表格布局错位),另约 5% 是渲染与格式错误(包括合并单元格、多级表头处理不当导致最终报表偏离要求)。

七、同样的活,换个技术栈怎么做

方案合并单元格怎么实现适合谁
润乾 rpx + Agent 技能同值合并 / 空值合并属性 + 单元格表达式已有报表平台、要出可发布的报表模板
Python + openpyxlmerge_cells(range) 显式指定起止坐标,需自己算分组边界一次性导出、脚本化报表
Claude + Google Sheets直接在侧边栏改当前文件,可让 Python 处理复杂合并再写回已用 Google 办公套件
Microsoft 365 Copilot + Excel“允许编辑” 模式适合多步骤建表与重构已用 Microsoft 365
WPS AI 表格助手对话式合并多表、按姓名匹配汇总国内办公场景、轻量需求

WPS选型的判断点不在 “谁会写公式”,而在合并规则由谁承担:润乾这类报表平台把 “同值相邻即合并” 做成了引擎能力,Agent 只需给规则;openpyxl 这类库把合并交给调用方,Agent 必须自己算每一段的起止行,出错面大得多。

八、这套方法能复制到什么场景

场景可复用的规则需要额外处理的
组织架构考核表多级层级纵向合并 + 空值向左层级深度不一,需处理缺级
财务科目汇总科目层级合并 + 小计行小计行不能被合并吃掉
销售区域分析大区 / 省 / 城市三级区域口径变更时的排序稳定性
项目进度矩阵阶段纵向合并跨列合并较多,交叉判断更频繁
人员花名册部门合并同名同部门需去重后再合并

腾讯云一句能落地的判断:想让 Agent 一次做对动态合并单元格,别去描述 “长什么样”,去描述 “哪些字段相同就合、哪些字段为空就往哪个方向合、按什么字段排序、用什么键关联”—— 把视觉需求翻译成这四句话,比给一张参考图有用得多。

【常见问题】

问题 1:对话式制作报表时,动态合并单元格为什么总是一次做不对?

回答 1:多数不是模型能力问题,而是需求描述缺了前提。动态合并单元格依赖三件事:值必须相邻、合并不能交叉、同值合并要先于空值合并执行。如果只说 “省市区相同就合并”,没说按哪几个字段排序展开,Agent 就可能让同值散落在不相邻的行里,引擎按规则判定 “不合并”,最后看起来像没生效。把排序字段、合并方向、执行次序一起写进需求,命中率会明显提高。

问题 2:动态合并单元格里的 “同值合并” 和 “空值合并” 有什么区别?

回答 2:同值合并处理的是 “相邻且值相同”,分横向、纵向、双向三种,只对同一扩展格有效;空值合并处理的是 “这一格是空的”,让它向上、向下、向左或向右找相邻的同列等宽格合并。层级报表里的典型搭配是:省、市用纵向同值合并,区县及以下用空值向左合并。两者叠加,才会出现上层一栏贯通、下层逐级细分的效果;次序上必须先做同值合并,再做空值合并。

问题 3:对话式制作报表时,怎么让 Agent 稳定产出可校验的结果?

回答 3:靠 “交付物设计” 而不是靠运气。要求它同时给出三样:报表模板、预览文件、生成源码。模板是结果,预览用于肉眼核对版式,源码用于定位问题 —— 合并区域起止格错一位、排序字段选错、关联键写错,都能在源码里看出来。再配一条硬规则:素材里没有的数据一律用占位符标注,不许估算。有实测显示,加上数据溯源要求后,报告里的幻觉数据可以从初稿的 3 处降到 0 处。

问题 4:动态合并单元格在 Python 里怎么实现,和报表平台有什么不同?

回答 4:Python 侧通常用 openpyxl 的 merge_cells 显式指定起止坐标,例如 ws.merge_cells('A2:D2') 或按行列参数指定范围。差别在于 “规则由谁承担”:报表平台把 “相邻同值自动合并”“空值按方向合并”“禁止交叉” 做成引擎能力,你只给属性;openpyxl 只负责执行合并动作,分组边界、相邻判断、交叉检查都要自己算。所以对话式制作报表时,用平台型方案出错面更小,用库型方案必须把边界计算写成可测试的代码。

问题 5:为什么有时明明值相同,动态合并单元格却没合并?

回答 5:三种常见原因。第一,值不相邻 —— 没有按层级字段排序展开,相同的值被别的行隔开;第二,会产生交叉 —— 同列或同行的格子只能包含或被包含,合并后若与已有合并区交叉,引擎会放弃这次合并;第三,设错了对象 —— 同值合并只对扩展格有效,设在静态格上不会生效。排查顺序建议按这三条走,比反复改配置快。

问题 6:对话式制作报表能完全替代人做动态合并单元格吗?

回答 6:现阶段是 “能一次成型,但不能免检”。案例里 Agent 用 7 分 24 秒产出了模板、预览与源码,效率上确实替代了手工拖拽;但合并是否正确、KPI 是否对到了正确的行、小计行有没有被合并吃掉,仍需要人抽验。学术界对企业表格工作流的分析也显示,约 25% 的失败来自生成的脚本与表格布局错位,这类错误靠 “看预览像不像” 很难发现。稳妥的用法是:Agent 出初稿,人只做三类检查 —— 合并区域坐标、关联键、汇总行完整性。

【参考资料】

[2026-11-13](AI Agent 对话式制作复杂报表实践:报表动态合并单元格)腾讯云开发者社区

[2026-10-08](Claude 打通谷歌办公三件套,文档表格 PPT 直接改)36 氪

[2026-07-22](混元 Hy3 Agent 实战:季度报告从 3 小时压缩到 40 分钟,附完整 Prompt 模板)腾讯云开发者社区

[2026-07-09](Why AI Misreads Your Tables and Spreadsheets)MemX

[2026-07-09](多表格合并太耗时?AI 合并表格数据的 WPS 实操方案与选型指南)WPS 官方网站

[2026-01-03](Finch: Benchmarking Finance & Accounting across Spreadsheet-Centric Enterprise Workflows)arXiv

[2018-07-31](润乾秘笈之动态合并格报表)乾学院

[查阅日期 2026-11-14](单元格属性 - 一般单元格属性:同值合并与空值合并)润乾官方文档

[查阅日期 2026-11-14](Inserting and deleting rows and columns, moving ranges of cells:Merge / Unmerge cells)openpyxl 官方文档

免责声明:本文依据 2026 年 11 月 14 日前公开的技术文章、厂商官方文档与学术基准整理,属于对公开实践的方法拆解,不构成对任何报表产品的能力承诺、采购建议或技术选型结论。案例中的耗时(7 分 24 秒)、产物名称、数据集行列数与 “通过两道校验” 均引自原文作者自述,属单一信源,未做独立复现,其环境为润乾报表设计器 20260916 版配合 rpx-agent-toolkit 与 TERA,其他版本或未安装对应技能时结果可能不同;文中 setMergeSame、setMergeNull、setMergedArea 等属性名为该文与该产品口径,不同实现可能采用不同命名与参数。合并规则部分(同值合并仅对同一扩展格有效、禁止交叉、先同值后空值、多方向按向下→向上→向左→向右执行)引自润乾官方属性文档,具体行为请以当前版本文档与实测为准。openpyxl 的合并行为引自其官方文档,其不负责公式与依赖关系的自动维护。文中 “约 25% 失败来自代码生成错误、约 5% 为渲染格式错误” 引自一篇企业财务表格工作流基准的误差分析,样本与方法以其原文为准,不可直接外推到任意报表任务。参考条目中标注 “查阅日期” 者为无明确发布日期的官方文档,仅代表本次查阅时点。涉及生产环境的报表发布,请在测试环境完成合并区域、关联键与汇总行的三重核对后再上线。

今日大家都在搜的词: