当前位置: 欣欣网 > 码农

介绍一个开源可视化报表工具

2024-02-09码农

CellReport 是一个制作复杂统计报表的工具,以解决日常快速制作统计报表的需求为初衷。它提供了多种数据源选择,包括数据库、Excel 文件、API 服务和已有报表,通过内置的集合函数,以类 Excel 界面设计报表,最终呈现结果。

功能特点

  • 1. 支持常规的清单、分组和交叉报表 :可以根据需要对数据进行清单、分组和交叉展示。

  • 2. 多源、分片 :支持使用多个数据源,并且可以将数据分片处理。

  • 3. 多数据集的集合运算 :可以对多个数据集进行集合运算,方便加工数据。

  • 4. 单元格扩展、引用 :支持单元格的扩展和引用,方便制作复杂的统计报表。

  • 5. 内置类 JS 语言引擎 :可以使用内置的类 JS 语言引擎实现自定义脚本功能。

  • 6. 丰富的函数定义 :内置了丰富的函数定义,方便进行计算和操作。

  • 7. 可自定义扩展函数 :可以根据需要自定义扩展函数,满足个性化需求。

  • 8. 页面元素丰富 :预定义了报表组件、Echart 组件、数据展现组件等丰富的页面元素。

  • 9. 灵活的报表元素间数据引用 :报表元素间的数据引用设置灵活,方便局部报表刷新。

  • 10. 支持组件报表引用 :可以引用其他报表软件制作的报表(专业版提供)。

  • 工作原理

    在报表运行时,首先以并行方式获取所有数据集的数据,并根据报表设计中预定义的公式进行数据合并和运算。最终将数据以 JSON 格式传递给前端展示页面,前端根据 JSON 结果呈现报表。

    CellReport 的运行环境内置了类 JS 语言环境,所有运算都基于该语言核心。制作报表时,只需要记住少量函数以及基本的加减乘除运算。

    运行环境提供了多个可以自定义控制的接入点,例如在报表运行前进行通用检查、控制数据是否回传给前端等。前端展示部分使用了 Vue 框架和模板编译器,可以自由控制 Echart、数据展示等组件的显示样式。

    CellReport 的后端基于 .NET 6 运行,具有高内存效率,仅需约 300MB 内存。它采用了大量异步任务和延迟返回等技术,执行效率与手写加工数据程序相当。

    如果系统没有预定义的函数,可以通过实现 FunctionUnit 接口来扩展系统,也可以使用内置语言实现一些简单的函数扩展。