欢迎来到 Dotnet 工具箱!在这里,你可以发现各种令人惊喜的开源项目!
CellReport
CellReport 是一个以 复杂统计报表 为核心目标的制作、运行工具。你可以使用数据库、excel文件、api服务、已有报表等为数据源,通过内置的集合函数组织数据,以类excel界面设计最终呈现结果。
CellReport 诞生的初衷是为了解决日常快速制作统计报表的需要。在总结了市面上各种报表软件的前提下,结合集合运算的思想,使得报表制作人员抛弃使用存储过程加工数据的方式,专注于每一类指标的加工,然后在报表设计界面,通过集合函数组织数据,极大得方便了报表的制作和维护。
主要特点
• 支持所有常规的清单、分组、交叉。
• 多源、分片
• 多数据集的集合运算
• 单元格扩展、引用
• 内置类js语言引擎 可以使你自己的程序具有自定义脚本功能
• 丰富的函数定义
• 可自定义扩展函数
• 页面元素丰富。预定义有报表组件、echart组件、数据展现组件等
• 灵活的报表元素间的数据引用,局部报表刷新设置方便
• 组件报表引用、以及对其他报表软件制作的报表引用(专业版提供)
截图预览
![null d1f2ca51b868c972020341fcd6302dbd.png](https://i-blog.csdnimg.cn/blog_migrate/bdb9d7d4ee621e61907c7e546b0ade26.png)
![null 5b939c1bde812f79c5ad3524bfd372c8.png](https://i-blog.csdnimg.cn/blog_migrate/696cfc26bdcfe623e617488b5ff1147f.png)
![null e4e473fc44efcc99c2e9e8c004c9487e.png](https://i-blog.csdnimg.cn/blog_migrate/3382dfad7c8c95856526385dd286969d.png)
![null c1ad5bfcddc83f341c81296edb2cf4c9.png](https://i-blog.csdnimg.cn/blog_migrate/f0c074d91b5d8d49e80e822d154c3534.png)
![null e6c34224293d01af99b9a28fc72742f6.png](https://i-blog.csdnimg.cn/blog_migrate/3193923265fbea584f0da014baec7b5b.png)
![null eec1221f4dc336ab18e3bb0b3427a1e2.png](https://i-blog.csdnimg.cn/blog_migrate/0b8a8e54ff4a5624e3d360bf459b3c2e.png)
实现原理
前端设计器采用基于vue、luckysheet、echarts等前端技术实现的网页方式 后端报表引擎核心基于netcore6 实现。
报表运行时,会首先以并行方式将所有数据集的数据取到运行环境,然后根据报表设计中预定义好的公式做数据的合并、运算,最终数据以json方式传给最终展现页面,前端页面根据json结果呈现最终展示。
报表运行环境内置了类js语言环境,所有运算都是以该语言为核心。通常制作报表,我们只需要记住10个左右的函数,以及+-*/ ,就足够我们制作复杂的统计报表了。
运行环境提供了很多可以拦截接入自定义控制的地方,如:报表运行前的通用检查、控制数据集的数据是否回传前端等。前端展现可以动态插入自定义css、js 。
前端是以vue 为基础,通过template-compiler模板编译器,可自由控制echart、数据展现等组件的显示样式。
后端运行的基础环境是net6。内存效率利用极高,仅需300M左右内存。内部大量异步任务和延迟返回等技术,执行效率基本和原生手写加工数据程序的运行效率相当。
我们可以通过实现FunctionUnit接口实现系统没有预定义的函数,也可以用内置语言实现一些简单的函数扩展。
往期推荐:
DotNetCorePlugins- 动态加载和卸载 .NET 程序插件
项目地址
https://github.com/NoneDay/CellReport
分享
点收藏
点点赞
点在看