AppBoxFuture: Web在线报表设计与PDF生成
企业应用需要打印各类单证及报表,为了方便开发此类应用作者在框架内集成了报表引擎,并且实现了基于Canvas的Web在线报表设计及基于PDFJS的报表查看与打印。
一、原理浅析
- 报表模型:由Xml描述各类报表元素组成(表格、图形、条码等),通过报表设计器生成;
- 数据源:通过推(Push)或拉(Pull)的方式填充报表所需数据,其中Pull模式直接调用框架内服务生成数据源。
- 报表生成:报表引擎解析模型后进行布局与数据填充,并根据需要渲染输出pdf或者其他格式。
二、设计与预览


三、操作说明
1. 新建报表
通过IDE主菜单->New->Report,输入报表名称后点击确认创建。
2. 添加元素
切换至工具箱选择需要添加的报表元素,然后在报表设计画布上拖拉添加相应的元素。

3. 设置样式
选择报表元素后通过属性面板设置字体、颜色、对齐方式、边框等样式。


4. 设置报表数据源
在设计画布上点击空白处选择报表,在属性面板点击“DataSets”打开数据源对话框,可从实体模型直接生成DataSet,亦可添加自定义字段或删除不必要的字段。

5. 绑定表格数据源
如下图所示选择整个表格,然后在属性面板的“DataSetName”内选择报表数据源。

6. 添加/删除表格列


7. 绑定表达式
文本框的Value值如果以=符号开头,则表示为表达式:
- ={FieldName} 表示绑定数据源的字段;
- ={?ParameterName} 表示绑定报表参数;
- ={@GlobalName} 表示绑定报表全局变量,如TotalPages, PageNumber等;
页眉或页脚的文本框绑定字段时,只能使用聚合函数,如:=Sum({FieldName}, "数据源名称")
四、本篇小结
前后历时近一个月,还有很多功能未实现,如交叉表、图形、表格分组、单元格合并拆分等,另外需要实现报表HTML输出,支持钻取等功能,这样就是一套完整的BI了。一边码代码一边码文实属不易,作者需要您的支持请您多多点赞推荐!
AppBoxFuture: Web在线报表设计与PDF生成的更多相关文章
- 吉特仓储管系统(开源WMS)--Web在线报表以及打印模板分享
很早之前就想写这篇文章与大家分享一下自己在吉特仓储管理系统中开发打印和报表的功能,在GitHub(https://github.com/hechenqingyuan/gitwms)上公开下载的代码中很 ...
- ActiveReports报表控件 V13 正式发布,提供在线报表设计和自适应报表布局
重磅消息, ActiveReports V13 正式发布!本次更新 ActiveReports 将给您带来全新的报表设计体验:提供在线报表设计器.提供响应式布局和屏幕尺寸自适应能力.提供全新的图表…… ...
- Web在线报表设计器使用指南
市面上的报表工具有很多,虽说功能大同小异,但每一个报表工具都有各自明确的定位,选择最合适的工具,才能达到事半功倍的效果. 本文将要介绍的ActiveReports报表工具,可全面满足 .NET 报表开 ...
- 在线报表设计实战系列 – 制作多Y轴组合图表(8)
葡萄城报表是一套强大的报表开发和系统搭建工具,既能与您开发的报表软件项目紧密集成,也可独立部署运行,支持多数据源,具有无编码.灵活.稳定等特性,可以帮您快速搭建专业的报表软件系统,实现各类报表的设计. ...
- 创建您的 ActiveReports Web端在线报表设计器
概述 ActiveReports Web端在线报表设计器已经正式上线!看到它这么帅气.实用,你是不是也想自己动手创建一个? 现在我们就来教您,如何创建一个简单的 ActiveReports Web端在 ...
- Java实现web在线预览office文档与pdf文档实例
https://yq.aliyun.com/ziliao/1768?spm=5176.8246799.blogcont.24.1PxYoX 摘要: 本文讲的是Java实现web在线预览office文档 ...
- HighCharts SVN IReport进行PDF报表设计--模板
BOS物流项目笔记第十五天 HIghcharts是很强大的图表绘制插件,它是基于纯js绘制的.当然地,对于图表也会有很多操作了.下面就我工作时遇到的一些比较常见的highcharts的操作进行小结,不 ...
- 基于Web在线考试系统的设计与实现
这是一个课程设计的文档,源码及文档数据库我都修改过了,貌似这里复制过来的时候图片不能贴出,下载地址:http://download.csdn.net/detail/sdksdk0/9361973 ...
- Web信息架构:设计大型网站(第3版) [美]Peter Morville 中文PDF扫描版
新版Web信息架构设计大型网站针对新技术做了全面更新——搭配新颖范例.全新场景及最佳实践信息——但是,其焦点依然放在基础原理上.其结构严谨,图文并貌,内容涵盖了信息架构基本原理和实践应用的方方面面. ...
随机推荐
- OpenCV-Python 理解K近邻 | 五十三
目标 在本章中,我们将了解k近邻(kNN)算法的原理. 理论 kNN是可用于监督学习的最简单的分类算法之一.这个想法是在特征空间中搜索测试数据的最近邻.我们将用下面的图片来研究它. 在图像中,有两个族 ...
- ThunderNet :像闪电一样,旷视再出超轻量级检测器,高达267fps | ICCV 2019
论文提出了实时的超轻量级two-stage detector ThunderNet,靠着精心设计的主干网络以及提高特征表达能力的CEM和SAM模块,使用很少的计算量就能超越目前的one-stage d ...
- FME中按照ID值过滤块参照中的多个要素
- Linux/CentOS7搭建Anaconda运行环境
1. 安装miniconda 下载并安装miniconda到$HOME/.miniconda/ #从官网下载 wget -c "https://repo.anaconda.com/minic ...
- Python python 函数参数:关键字参数
# 关键字参数 '''关键字参数代表传入任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict ''' def student(name,sex,**keywords): print(' ...
- 上传到码云时遇到:Incorrect username or password ( access token )
由于之前上传到 码云时候使用命令:git push -u origin master时出现如下bug Incorrect username or password ( access token ) 时 ...
- if-else、switch、while、for
文章主要会涉及如下几个问题: if-else 和 switch-case 两者相比谁的效率会高些?在日常开发中该如何抉择? 如何基于赫夫曼树结构减少 if-else 分支判断次数? 如何巧妙的应用 d ...
- Java数组模拟队列
队列 先进先出 什么意思呢? 我的理解:队列就是一个数组(不包含链表),然后我们给它施加一个存数据和取数据的规则 当只允许从一端存数据,从另一端取数据的数组,就是队列,我们要做的就是给这个数组施加我们 ...
- Python语言上机题实现方法(持续更新...)
Python语言上机题实现方法(持续更新...) 1.[字符串循环左移]给定一个字符串S,要求把S的前k个字符移动到S的尾部,如把字符串"abcdef"前面的2个字符'a'.'b' ...
- python--Django(三)视图
Django的视图 不同于其他语言的MVC模式,Django采用的是MVT模式,即Model.View.Template,这里的View其实质就是其他语言中的Controller(emmm.....) ...