企业应用需要打印各类单证及报表,为了方便开发此类应用作者在框架内集成了报表引擎,并且实现了基于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生成的更多相关文章

  1. 吉特仓储管系统(开源WMS)--Web在线报表以及打印模板分享

    很早之前就想写这篇文章与大家分享一下自己在吉特仓储管理系统中开发打印和报表的功能,在GitHub(https://github.com/hechenqingyuan/gitwms)上公开下载的代码中很 ...

  2. ActiveReports报表控件 V13 正式发布,提供在线报表设计和自适应报表布局

    重磅消息, ActiveReports V13 正式发布!本次更新 ActiveReports 将给您带来全新的报表设计体验:提供在线报表设计器.提供响应式布局和屏幕尺寸自适应能力.提供全新的图表…… ...

  3. Web在线报表设计器使用指南

    市面上的报表工具有很多,虽说功能大同小异,但每一个报表工具都有各自明确的定位,选择最合适的工具,才能达到事半功倍的效果. 本文将要介绍的ActiveReports报表工具,可全面满足 .NET 报表开 ...

  4. 在线报表设计实战系列 – 制作多Y轴组合图表(8)

    葡萄城报表是一套强大的报表开发和系统搭建工具,既能与您开发的报表软件项目紧密集成,也可独立部署运行,支持多数据源,具有无编码.灵活.稳定等特性,可以帮您快速搭建专业的报表软件系统,实现各类报表的设计. ...

  5. 创建您的 ActiveReports Web端在线报表设计器

    概述 ActiveReports Web端在线报表设计器已经正式上线!看到它这么帅气.实用,你是不是也想自己动手创建一个? 现在我们就来教您,如何创建一个简单的 ActiveReports Web端在 ...

  6. Java实现web在线预览office文档与pdf文档实例

    https://yq.aliyun.com/ziliao/1768?spm=5176.8246799.blogcont.24.1PxYoX 摘要: 本文讲的是Java实现web在线预览office文档 ...

  7. HighCharts SVN IReport进行PDF报表设计--模板

    BOS物流项目笔记第十五天 HIghcharts是很强大的图表绘制插件,它是基于纯js绘制的.当然地,对于图表也会有很多操作了.下面就我工作时遇到的一些比较常见的highcharts的操作进行小结,不 ...

  8. 基于Web在线考试系统的设计与实现

    这是一个课程设计的文档,源码及文档数据库我都修改过了,貌似这里复制过来的时候图片不能贴出,下载地址:http://download.csdn.net/detail/sdksdk0/9361973   ...

  9. Web信息架构:设计大型网站(第3版) [美]Peter Morville 中文PDF扫描版

    新版Web信息架构设计大型网站针对新技术做了全面更新——搭配新颖范例.全新场景及最佳实践信息——但是,其焦点依然放在基础原理上.其结构严谨,图文并貌,内容涵盖了信息架构基本原理和实践应用的方方面面. ...

随机推荐

  1. 重磅!刷新两项世界纪录的腾讯优图人脸检测算法DSFD开源了!

    近日,知名开源社区Github上有个名为DSFD(Dual Shot Face Detector)的算法引起了业内关注,它正是来自于腾讯优图.目前,该算法已经被计算机视觉顶级会议CVPR 2019接收 ...

  2. Python第六章-函数05-迭代器&生成器

    python作为一个既面向对象,又支持函数式编程的语言,函数的使用方面有很多特点. 比如:闭包,装饰器,迭代器等 函数的高级应用 容器:生活中常见的容器有哪些?袋子,盆子,水杯,书包,铅笔盒... 容 ...

  3. 有个原则就是实体类还是controller入参都应该是 包装类型

    问题说明 我在使用JPA作为项目的ORM框架的时候,在分页查询中,不管咋样使用查询不出来数据,然后发现Hibernate构建的查询SQL中,在where子句中带上了createTime=0这个条件.这 ...

  4. 开源APP

    仿微信 https://github.com/zhengwenming/WeChat 电台韵律 https://github.com/DaMingShen 运动App https://github.c ...

  5. 《深入理解 Java 虚拟机》读书笔记:线程安全与锁优化

    正文 一.线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那 ...

  6. mysql 5.7.18安装教程

    安装之前 确认是否已安装旧版mysql.如有,则卸载(注意需要的数据备份). /etc/init.d/mysqld stop yum remove mysql mysql-* rm -rf /var/ ...

  7. 老技术新谈,Java应用监控利器JMX(3)

    各位坐稳扶好,我们要开车了.不过在开车之前,我们还是例行回顾一下上期分享的要点. 上期我们深入的聊了聊 JMX,把 JMX 的架构了解了七七八八,最后通过代码实战,解决系列疑问,实现远程动态修改应用参 ...

  8. 新手必学linux文本文件编辑命令 vi vim.....

    作为一名Linux新手小白,今天就和大家简单地了解一下Linux的Vim文本编辑器的使用. Vim文本编辑器     vim编辑器的三大模式——命令模式.编辑模式和末行模式            命令 ...

  9. 版本控制git的简单使用

    0.第一次使用时配置: git config --global user.name "your_name" git config --global user.email " ...

  10. 【C++】VS2017 不能将const char * 分配给 char *

    我的方式是把结构体中定义的 char * 换成string #include <iostream> #include<string> using namespace std; ...