在中国企业的信息化语境里,"报表"这个词其实藏了两个动作。

“报”——数据填报。一张空表单下发到一线,业务人员把实际发生的事情填进去,这是数据收集。

“表”——数据呈现。基础数据汇总、计算、分析之后,形成管理者真正要看的那张表。

绝大多数报表项目的失败,不是因为表样画得不好看,而是因为只做了"表",没做"报";或者两个动作各自做成了独立模块,中间那条链路断了。

用友 BIP 是面向企业运营的商业创新平台——云原生、元数据驱动、中台化、数用分离架构,覆盖平台服务、应用服务、业务服务与数据服务。它并不是一个报表产品。但恰恰是在这样一个庞大的体系里,用友把"数智报表"做成了一块专门的模块能力。原因只有一个:报表是平台与客户业务之间的最后一公里,这一段跑不通,前面所有的建设都折价。

企业技术负责人关注的,不是系统增加了多少报表功能,而是三件更根本的事:这项能力该不该自研,平台与表格的边界怎么划,以及这笔投入能不能真正跑通从填报到分析的完整链路。围绕这三件事,可以形成六个判断。

判断一:复杂报表有三重约束,而它们不是三个模块

从用友的实践里,可以把客户的现实需求归纳为三类。

第一类,格式。 这里说的不是"单元格显示百分比还是小数",而是整张报表的格式复杂度:多层多级表头、大量不规则合并、嵌套公式,以及随权限动态变化的展示规则——基层单位只能看本单位数据,上级单位能看到全部;哪些字段要隐藏、哪些公式在什么权限下不可编辑。这些规则还会经常变。

第二类,数据。 平台型产品要面对的是一个完整的企业业务系统。报表数据可能来自财务、业务、物流、生产等多个子系统或子公司;有的直连数据库,有的靠人工填报,有的要对接其他 ERP 或专业财务软件,还有的是上级主管部门下发的参考数据。来源的复杂度和数量,会显著放大汇总、合并、计算与校验的难度。

第三类,分析。 填报只是手段,用数是目的。子公司和基层的填报结果必须入库,才能进入分析环节。以预决算为例,预算做完之后,决算阶段还要做跟踪、审核,去年的预决算结果和财务数据要被拿来作为今年的管理判断依据。

关键洞察在这里:这三类约束不是三个独立存在的模块,它们在同一条链路上——

模板(怎么对接格式)→ 数据(数据从哪来、放到哪去)→ 分析(怎么合并、怎么用)

规划阶段不能只盯着"这个模板很复杂,怎么解决它",而要把三类问题放在一条链路上整体考虑。否则一期上线可能很顺利,到了二期扩展却突然卡住。回头看,往往是最初设计模板时没有把数据准备和分析口径一起想清楚,才让后续工作失去了继续推进的空间。

判断二:问题越靠后越贵,所以链路必须前置设计

这是软件工程里的老规律:一个问题越往后放,修复成本越高。放在报表系统上,它变成一句很具体的警告——复杂报表一定是一条任务链,验证必须从头走到尾。

从导入模板开始,到最后分析结束,要整条链路一起分析,而且要尽可能把问题解决在前面。

葡萄城 SpreadJS 产品经理张明在公开课分享中给出了三个相当实用的链路健康指标:

指标看什么异常信号
模板复用率用户是否愿意复用你提供的模板新建模板特别多、复用得少,说明模板设计的自由度太低,用户用不下去
任务完成路径从模板 → 取数 → 校验 → 提交是否顺畅取完数发现不符合用户需求的字段很多
人工补录占比有多少数据系统取不到、必须用户手填比例越高,链路断点越多

这三个指标的价值在于:它们都可以在上线前观察到,而不是等业务方抱怨了才知道。

判断三:真正的"自研 vs 采购"决策,算的是机会成本

这是平台技术选型时最需要想清楚的一点。用友是一家实力雄厚的企业软件厂商,为什么不自研一个电子表格?

答案和成本有关,但算的不是采购价差,而是产品团队的时间该投到哪里

你的产品团队,是应该长期把时间投入到通用表格引擎的研发上,还是应该投入到业务系统本身、投入到各行业的适配和灵活性上?

用友的答案是后者。而且这个答案不是孤例——在用友 BIP 之前,用友体系内的畅捷通 T+Cloud 就已经通过嵌入 SpreadJS 前端表格控件,实现了类 Excel 的报表设计功能和自定义公式计算。借助纯前端特性,畅捷通把 T-UFO 报表内嵌进自研浏览器,既不依赖任何第三方组件,又在保留原有功能的前提下易于二次扩展。

这里的结论是:通用能力(表格引擎、公式引擎、Excel 兼容)是一个需要长期持续迭代的深水区。更合理的做法是把它交给专业供应商,把自研预算留给业务 Know-how 和行业适配。反过来看,如果一家 ISV 的产品路线图上有"自研表格"这一项,首先需要追问:它的差异化价值到底在哪里?

判断四:Excel 是存量资产,兼容它不是保守

用友在选型时非常看重一个点:与 Excel 的兼容性,因为它要符合一线业务人员的操作习惯。

很多企业容易把"兼容 Excel"理解成技术保守。恰恰相反,这里有三层现实。

第一,Excel 是企业的存量资产。 企业原有的很多报告、报表、表单,都是用 Excel 设计甚至直接存储在 Excel 里的。上一套新系统就要求企业把这些资产全部作废、从零重来,成本大得没有人能接受。

第二,迁移风险要用兼容性来对冲。 既然要让用户用新系统,就必须保留用户的操作习惯,不能让用户觉得难用、还要重新学习。目前来看,Excel 的操作习惯在所有工具里适配性最高——几乎所有的岗位、所有的业务人员都会用 Excel。如果全部重建习惯、全部重建资产,浪费的不只是用户的时间成本,还有培训成本、测试成本,以及与业务反复确认"这是不是真的你想要的东西"的沟通成本。

第三,最稳妥的路径是复用。 用现有模板 → 对现有模板再次利用 → 把现有 Excel 模板变成在线模板。这是当下更稳妥、也是更多企业在走的路。

由此得出一条可以直接抄的验证经验:当你要验证一个系统提供的"在线 Excel 能力"时,一定要用最真实的模板去测——优先选那些公式多、公式密集、含大量合并、样式复杂的业务模板,而不是拿一张空白模板,或者用系统内置的示例去测。因为往往那样的测试根本发现不了问题。

判断五:性能的真相不是参数,是责任边界

在这类平台型产品的选型中,性能是很重要的一点。用友 BIP 的客户往往是大型企业,数据量很大,客户材料里明确提出了百万级数据处理的性能关注

但这里必须说清楚一个工程事实:把百万级、千万级的全量明细直接推给浏览器去分析,在目前的浏览器性能下是一个伪命题。

原因很直白——你推给浏览器,是要让用户"看"的。用户怎么看百万行数据?让前端去算吗?浏览器走的还是单线程 JS,即使有 Web Worker、WebAssembly 这类技术,计算性能与内存占用依然受限。

所以正确的做法是分层:

层级负责什么
数据处理层抽取、加工、关联、聚合、缓存、预处理(把日报表/周报表用到的明细提前抽取并缓存好)
平台层可用的数据源、任务清单、权限范围与当前状态
表格层展示、编辑、用户自行的一些分析交互、结果呈现

关键动作:把这个分层写进性能 SPEC。

不要只写一个数字——“这个页面打开要几秒”。这种写法往往没有意义,出了问题也不好排查。要拆开写:

  • 加载组件需要多长时间
  • 获取模板需要多长时间
  • 模板之上的数据传输需要多长时间
  • 数据传输之前,后端的数据集计、数据关联需要多长时间
  • 再往前,从各个数据源抽取数据需要多长时间

同时还要把两个常被忽略的变量纳入设计:

  • 数据规模的真实分布:顶峰是多少、常规是多少、低谷是多少
  • 网络条件:传输大量数据时,网络条件不好对用户而言就是一个"等待",而用户分不清是网络慢、还是本机慢、还是系统本来就慢

把性能拆到层、拆到环节,才能明确数据层、平台层、组件层各自该负责什么,才不会把三层职责混成某一个性能指标。

判断六:AI 不要放在第一步

用友的分享里也提到了 AI 能力。现在很多报表系统都在加 AI:让 AI 分析现有数据、帮助获取数据、创建图表,进入仪表板、数据大屏和管理分析。

但张明在分享中提出了一个很克制的判断,也说明了"AI + 报表"的落地节奏:

数据分析一定是报表数据积累之后的下一步。

在系统刚建立、报表数据还没积攒到一定量的时候就让 AI 去做分析,样本太少。大模型可以借助它自己的知识库来分析你的数据,但它无法参考往年数据、同岗位数据、同业务数据这些真正有业务含义的横向参照。加上企业用大模型往往还需要自己配置、不能让企业数据对外发送,落地的约束更多。

更稳妥的落地节奏是:先把报表数据链路做扎实,等知识库和数据积累到位之后,再上数值分析。

葡萄城在这条路径上也给了两类可直接落地的工具:

  • SpreadJS AI Agent(表格智能体):以 Apache 2.0 协议开源,完整源码开放、商业项目可直接使用,基于 SpreadJS 19.0.1 构建。它把「表格基础控制 / 文件与外部数据 / Agent 编排 / 系统工程」四块能力封装在一个工程里,支持接入任意主流大模型,可部署在企业内网,实现数据不出域。开源地址:gitee.com/GrapeCity/spreadjs-ai-agent
  • 葡萄城 MCP 服务mcp.grapecity.com.cn):把葡萄城官方知识资产做成只检索、不推理的 MCP Server,覆盖 1,800+ 产品使用文档、1,500+ API 参考文档、700+ 官方示例 Demo、400+ 实战代码库示例、50+ 最佳实践,首批支持 SpreadJS、GcExcel、活字格、Wyn。

这个判断可以压缩成一句话:先让数据链路产生可积累的资产,再让 AI 来消费这笔资产。

六条决策清单

#动作判断标准
1用真实复杂模板做 POC优先选公式密集、合并多、样式复杂的业务模板,而不是空白模板或厂商内置示例。看导入后公式是否正确计算、样式是否保真、合并区域与打印设置是否 OK
2走完整链路验证建模 → 编报 → 汇总 → 校验 → 输出 → 回退,一条链路走完,不要只看功能清单。功能清单只是初筛,只能确认"至少满足这样的能力"
3明确三层责任边界表格层(展示编辑)/ 平台层(任务权限流程)/ 数据层(口径汇总计算)各自负责什么,写进架构文档
4性能 SPEC 分层写组件加载 / 模板获取 / 数据传输 / 后端关联汇总 / 数据抽取,各自指标分开;同时纳入数据规模分布与网络条件
5校验做双层前端即时校验(非法数据、必填未填,当场提示)+后端二次校验(与关联业务数据交叉验证),保证汇总时的数据质量
6界面不要割裂设计模板、填报、审核审批,最好都在同一个界面完成。设计时觉得是一套、填写时又是另一套,效率会很低

再加一条治理前置:权限、版本、任务的维护由谁负责、怎么排查、产品是否支持这种治理能力——体验、兼容、扩展、性能、治理这五项里,任何一项明显不满足,项目风险都会比较大。

结语

用友 BIP 与 SpreadJS 的这次结合,表面上看是"平台嵌了一个表格控件",实质上是把表格能力从"功能"提升为"平台底座"

  • SpreadJS 负责报表建模、报表编报、数智分析三个关键场景中的表格展现与交互:编辑、公式、格式、扩展;
  • BIP 作为平台负责组织任务、权限、流程、归档和产品集成;
  • 数据层负责口径、汇总、计算与分析数据准备。

边界清楚了,每个角色的价值才会凸显出来。

一张报表的成熟度,从来不是用"能不能打开"来衡量的,而是看这条链路能不能跑完、跑顺,并且具备自我修复的余地

继续学习

如果你希望结合公开课进一步了解用友 BIP 与 SpreadJS 如何协同解决复杂表格业务场景,可查看课程:

用友 BIP × SpreadJS 公开课学习地址

本文案例事实来源:葡萄城官方案例《SpreadJS 在用友 BIP 数智报表产品中的应用实践》、葡萄城公开课《企业表格业务数字化实践专题》第二期(主讲:葡萄城 SpreadJS 产品经理张明);产品参数以葡萄城官方产品文档为准。

Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。

更多推荐