硕迪报表中 JSON 数据的单元格直读与展示

一、背景与需求

在日常报表开发中,经常会遇到这样一种场景:业务系统通过 API 接口返回 JSON 格式的数据,报表需要直接读取这些数据并进行展示。

硕迪报表提供了多种方式来读取和处理 JSON 数据,包括脚本数据集、集算器数据集以及单元格中的 SPL 函数等。本文重点介绍如何直接在单元格中读取 JSON 数据并提取字段进行展示,这是最轻量、最灵活的方式之一。

二、核心方法:单元格中使用 spl() 函数

硕迪报表的 spl() 函数允许在单元格中直接执行 SPL(结构化过程语言)表达式,对 JSON 数据进行解析和提取,等同于在集算器中执行 eval 函数。

其语法为:spl(StringExp ,{argExp})

2.1 基础用法:提取单个字段

假设 A1 单元格存放着如下 JSON 数据:

{"code":0,"msg":"ok","data":{"construction_dt":879,"after_change_money":0,"control_mode":"司签直管","owner_unit":"","project_code":"01-01-2021-10-079","actual_commencement_dt":"2020-02-02","actual_completion_dt":null,"jt_code":"","name":"测试总进度计划","month_owner_confirmed_revenue":0,"vat_rates":0,"proj_status":"中标未签"},{"construction_dt":1,"after_change_money":0,"control_mode":"司签托管","owner_unit":"","project_code":"02-03-2023-09-225","actual_commencement_dt":"2023-02-28","actual_completion_dt":null,"jt_code":"","name":"test","month_owner_confirmed_revenue":0,"vat_rates":0,"proj_status":"中标未签"}}

要在 A3 单元格提取所有项目的 construction_dt 字段值,

则 A3 表达式为 =spl('json(?).data.select(construction_dt?).field("control_mode")',A1,A3) ,并设置单元格为纵向扩展。
解析:
json(?) ------ 将 A1 的 JSON 字符串解析为 SPL 序表结构
.data ------ 取 data 字段,即项目列表数组
.field("construction_dt") ------ 提取所有记录的指定字段,返回序列
2.2 带条件过滤的提取
根据 A3 中 construction_dt 的数据,获取 control_mode 的值
则 B3 的表达式为: =spl('json(?).data.select(construction_dt?).field("control_mode")',A1,A3

)预览结果为:(如下图)

注意事项

1、A1 必须是纯 JSON 字符串,不能包含多余的格式字符

2、如果 JSON 中某个字段在部分记录中缺失,field() 会返回对应位置的 null 值

3、spl() 返回的是 SPL 序列对象,直接在单元格显示时可能呈现为数组格式,如需逐行展示需设置扩展方式。

总结

硕迪报表的 spl() 函数为 JSON 数据的读取和展示提供了高度灵活的方案。通过在单元格中直接嵌入 SPL 表达式,可以轻松实现对 JSON 数据的解析、过滤、字段提取等操作,无需编写复杂的 Java 代码或额外的数据源配置文件。这种方式尤其适合 API 接口返回数据的即时展示场景,大大提升了报表开发的效率。

相关推荐
云道轩2 个月前
DeepSeek using Claude Code 重构Oracle Fusion/SAP最佳业务实践:讨论报表的实现技术
重构·报表·bi·商业智能
小志开发3 个月前
T100XR 设计器安装文件
报表·4gl·鼎捷t100·xr报表·设计器
不剪发的Tony老师4 个月前
ART:一款免费开源的报表与BI工具
报表·bi
花北城4 个月前
【帆软】动态样式分类汇总报表
报表·帆软·动态
不剪发的Tony老师5 个月前
ReportServer:一款现代化开源商业智能与报表平台
报表·商业智能
筱璦6 个月前
期货软件开发 - 交易报表
前端·windows·microsoft·报表·期货
云游8 个月前
Jaspersoft Studio community edition 7.0.3的应用
java·报表
小股虫8 个月前
打造跨服务数据的“可信视图”:实验效果报表的架构演进
大数据·分布式·微服务·架构·报表·团队建设