Loading...

WEB报表框架

一、 引言


在当下以B/S架构为主流的软件系统盛行的潮流中,数据内容的报表输出(预览、打印、导出)是一个硬需求。对于此需求的技术支持,一般有以下几种解决模式:

  • (一) 通过一对一的定制固化的HTML+JS页面来实现
  • 此模式具有以下特性:
  • 1. 定制化程度高,代码级控制,按纸张特征(尺寸、方向)控制不易;
  • 2. 报表的预览/打印与导出,需要做多套定制化的技术方案;
  • 3. 报表需求的变化与扩展,末端用户自主调整可能性为零,需要技术人员实现,且需要进行版本迭代;
  • (二) 通过第三方的报表组件来实现
  • 此模式具有以下特性:
  • 1. 第三方的报表组件主要解决普世性的通用报表需求,封装性高、独立性强;一般有设计器、有控制模型、有报表预览器、有报表导出器(主要采用将页面保存为PDF)、EXCEL导出器(有或无);
  • 2. 集成其报表组件,需要按其控制机制来预组装报表数据,报表内容的生成或导出过程,干预控制度低;
  • 3. 第三方的报表组件授权费用高、功能差异化的定制可能性为零。
  • (三) 通过C/S报表程序来实现
  • 此模式具有以下特性:
  • 1. 需要将报表封装成一个独立的C/S报表执行文件;
  • 2. 需要将C/S报表执行文件通过程序安装的方式,在操作系统层进行注册;
  • 3. 涉及到B/S页面调用C/S报表执行文件时的人机交互界面不友好;
  • 4. B/S系统与C/S报表执行文件之间的架构技术复杂,主要原因是涉及到报表内容数据包大的问题;
  • 5. 无法适配所有的操作系统;
  • (四) 通过本地HTTP服务来实现
  • 此模式具有以下特性:
  • 1. 架构技术复杂,其程序需要常驻内在;
  • 2. 其机制与第(三)种方式类似;
  • 3. 主要解决第(三)种方式在人机交互界面的友好性问题;
  • (五) 通过ActiveX插件来实现
  • 此模式具有以下特性:
  • 1. 其机制与第(三)种方式类似;
  • 2. 在早期用的较普遍,适配于低版本的IE浏览器;

二、 睿弈WEB报表模块简介


睿弈WEB报表模块作为睿弈系统平台的基础组成模块之一,主要目的为解决睿弈各个子系统的报表需求。

该模块的技术实现的基础是睿弈科技经历过上述传统报表研发过程(一)、(三)、(四)、(五)的技术沉淀。

其技术架构路线为:HTML+JS+CSS+JSON,该架构决定基本身具有高度的兼容性与可集成性。

其具有低耦合、易接入、高扩展性、处理速度快(毫秒级)的特点。

三、 睿弈WEB报表实现的功能


  • 1. 提供报表设计器模块(含可视化设计与文本式编辑)两种模式;
  • 2. 提供报表数据接口(含报表定义获取回调接口、报表内容获取回调接口);
  • 3. 提供不同纸张控制功能(含纸张尺寸、纸张方向);
  • 4. 提供分页控制功能(含预览分页、导出分页);
  • 5. 提供内容超宽控制功能(分超宽不控制、超宽自动扩展行高、超宽自动缩小三种模式);
  • 6. 提供多报表批量一次性成套预览打印功能;
  • 应用场景举例:
  • 1) 发票+商品明细的套打;
  • 2) 造价软件中成套造价数据的套打;
  • 7. 提供多报表批量一次性成套导出功能;
  • 应用场景举例:
  • 1) 发票+商品明细地导出;
  • 2) 造价软件中成套造价数据的导出;
  • 8. 提供报表生成过程的差异化控制能力;
  • 应用场景举例:
  • 1) 本页小计、合计需求;
  • 2) 不同数据行的单元格合并需求;
  • 3) 不同数据行的样式差异化控制需求(调字体、色彩、背景等);
  • 9. 支持扩展插件的驱动能力,满足深度定制需求;
  • 应用场景举例:
  • 1) 需要生成其他数据格式的需求;
  • 2) 需要加报表个性化水印需求;
  • 10. 提供报表输出日志的快照回放功能,适用于OA/ERP等管理系统的数据输出日志审计需求;
  • 11. 实现高性能的数据导出能力,在数据完备情况下,五十个Sheet页面的Excel文件,秒级生成。

四、 睿弈WEB报表模块架构图


Illustration

五、 睿弈WEB报表模块界面案例


(一) 可视化设计器

Illustration

(二) 报表预览


1. 主界面

Illustration

2. 单报表

Illustration

3. 套报表

Illustration

六、 睿弈WEB报表模块价值


睿弈WEB报表模块的方案架构与技术实现,有效解决了传统B/S系统的报表生成需求,从实操角度兼顾了各种报表的差异化控制需求,人机交互界面友好,可以真正为各类存在报表需求的用户进行技术赋能。