基于Excel的报表生成系统的实现

2012-08-06 09:37赵小娟王才善
铁路计算机应用 2012年4期
关键词:报表逻辑管理系统

赵小娟,王才善

(兰州交通大学光电技术与智能控制教育部重点实验室,兰州730070)

随着企业管理系统的广泛应用,越来越多的企业趋向于使用电子报表进行企业生产管理。报表作为一种信息统计和分析的重要手段,已成为信息系统的重要组成部分之一,而中国式报表的复杂性使得一些报表软件无法直接应用,如何将数据进行统计生成到报表中去,特别是生成到Excel电子表格中,就成为管理系统软件开发经常遇到的问题。本文结合洛阳石化铁路运输调度管理系统报表的设计,给出一个在.NET平台上,使用Orcal数据库和Excel开发报表应用的实例,从而提出一种基于Excel的报表开发方案。

1 报表生成系统需求分析

报表生成系统能及时、准确的反应企业实时的生产状况及现场等数据信息,方便企业管理。构成企业报表的基本要素有报表数据、报表格式和报表输出。

1.1 报表数据

报表数据主要分为生产数据和管理数据,生产数据是企业生产过程中产生和采集的实时数据和历史数据,例如铁路运输调度过程中的车数、车号、进出场时间等信息。管理数据是指企业管理中涉及的数据,如操作人员的信息、班次及工作考核情况等。

生产报表包括原始数据和统计数据,这些数据是各个系统运行时存入数据库的数据。报表设计时应考虑以下几点需求:

(1)对采集到或处理后的数据有定期(日、周、旬、月、季度、年)或不定期(阶段)展现的要求。

(2)对数据进行分类、统计求和、求差、求平均值、求最值等计算的要求。

(3)对采集到的数据有分组、分栏、排序显示的需求。

1.2 报表格式

在设计企业生产报表的过程中,对报表展现格式也有很高的要求,表1列出了几个铁路运输调度管理系统中生产报表的格式情况,主要有简单列表、分组报表、分栏报表和交叉报表等。因此需要设计的报表系统能够展现各种各样的报表格式。

表1 铁路运输调度管理系统生产报表格式

1.3 报表输出

随着企业信息化管理系统的应用,一般对报表的输出有以下几点要求:

(1)支持多种格式输出。要求报表能以各种不同的文件格式输出及打印,可以与不同办公软件进行交互,能够导出Excel、Pdf、Word等常用格式文件,主要导出Excel文件。

(2)支持各类输出设备。要求报表生成系统能够将报表输出到各种设备,如支持多种打印机,对生成的报表可进行精确的打印。

(3)支持导出报表可编辑。要求导出的报表可以进行人工编辑修改。

2 系统设计与实现

2.1 系统总体架构设计

整个报表生成系统的设计,遵循了软件设计的分层结构,主要分为3层如图1。最上层为用户界面层(UI层),进行与用户的交互、报表的显示、导出和打印。中间层为业务逻辑层,进行逻辑运算、报表模板读取、实现报表数据填充。底层为数据访问层和通信层,数据访问层直接和数据库连接,实现数据筛选、统计、运算。通信层主要为TCP/IP通信和串口通信,实现数据传输。

针对报表生成系统的通用性要求,整个系统采用了对象、组件技术进行开发。实现基于Excel的COM组件,结合ADO.NET技术和标准的PL/SQL语句的报表生成方法。

图1 报表生成系统结构图

2.2 数据访问层设计

数据访问层采用接口实现,主要完成对数据库的操作和与逻辑层的数据交互,数据访问层应用了ADO.NET组件,通过调用ADO.NET提供的各种类库(即Data Providers)方便访问不同的数据库,实现应用程序与数据库的交互。数据访问层通过ADO.NET对象建立与数据库的连接,调用数据库的存储过程,提取Excel报表所需的数据,将其存入建立好的DataSet对象中,此时可以断开与数据库的连接,将操作得到的DataSet返回给业务逻辑层,作为报表的数据源。

2.3 业务逻辑层设计

系统采用C/S和B/S混合架构设计,如图2。C/S的业务逻辑层程序运行在客户机上,B/S的业务逻辑层程序运行在Web服务器上。

图2 C/S和B/S混合模型结构图

业务逻辑层主要完成报表数据的二次筛选、报表模板读取和报表数据填充,主要功能分为3个部分:传递数据到数据访问层,接收从数据访问层返回的数据;获得从UI层传来的数据,传递数据到UI层;实现数据二次处理、逻辑运算等。在逻辑层通过C#.NET创建Excel报表之前,需要在工程中添加一个Excel的COM组件,在应用程序中使用其提供的对象、方法开发Excel报表。逻辑层接收UI层传递的参数,调用数据访问层接口,获得数据源,再通过COM接口库将数据源填充到报表模板中,形成报表文件。如果数据访问层返回的DataSet还不满足条件,可在逻辑层使用LINQ语句进行筛选、统计。例如对筛选出来的数据可以使用LINQ语句进行分组、统计汇总等。同时逻辑层也控制报表文件的输出格式,将最后形成的报表文件传递到用户界面层显示。

2.4 模板文件设计

模板文件是一个XLT格式的Excel文件,是定义报表生成数据时的具体方式。在模板中定义好表头区域、报表数据区和表结尾区。表头区域可以设置为固定表头,也可以设置为动态表头,根据需要进行选择。报表数据区是一个自适应区域,它随着数据的增长自动增长。报表结尾区随着数据区的变化自动向后移动,始终保持在数据区下方。在Excel工作簿中绘制所需的报表样式,设置模板格式化信息及公式,设置好后保存为模板格式,这样就完成了模板文件的制作。使用模板文件可以确保创建的文件格式保持一致,调用模板时,系统打开的是一个工作备份,不会破坏模板文件。

2.5 UI层设计

用户界面层是系统与用户交互的主要部分,提供了数据的录入和显示。设计用户登陆界面,使用户通过岗位名称、用户名和密码登录系统,在数据库中设计用户权限表和功能模块表,该表由系统管理员进行维护,用户登录时,根据用户名和岗位在用户权限表中查找相应权限,在用户操作界面显示相应功能模块。报表生成系统嵌入在统计管理模块中,报表生成界面显示用户可以查询的报表类型和名称,提供查询条件的输入,比如输入要查询的开始时间、结束时间、股道和班次等。同时判断输入条件的合法性,若输入条件不正确,则给出提示信息。界面上还设计了相应的操作按钮,提供报表生成、导出、打印、预览、格式选择和退出等按钮功能。通过触发按钮事件将用户的操作和选择以参数形式传递给逻辑层进行逻辑处理。同时,用户界面层也接收逻辑层返回的报表文件,实现报表的展现。

2.6 系统实现

(1)数据访问层实现,部分代码如下:

(2)报表模板调用,部分代码如下:

(4)关闭进程、释放资源:

在填写Excel过程中可能会有异常发生,需要使用异常处理机制,给用户提示信息,采取相应措施,使程序可以继续运行。

3 具体应用

在洛阳石化铁路运输调度管理系统报表生成子系统中,采用了基于Excel的分层模板架构的报表设计思路和方法,主要实现了企业的各类生产报表的生成、导出和打印如图3。该系统的应用不仅满足企业的生产需求,也减轻了操作人员统计报表的工作量,提高了工作效率。

图3 洛阳分公司铁路运输部生产日报

4 结束语

在.NET环境下,通过运用数据库技术、模板技术和组件技术,采用C#语言设计了基于Excel的分层式模板架构的企业报表生成系统,实现了企业对报表的需求。采用Excel实现,使页面布局设计灵活,方便用户的操作,满足了企业对报表要求,成功开发了洛阳石化铁路运输调度管理系统报表生成子系统,项目实施后具有很好的执行效率和稳定性,得到了用户好评,证明了该方案具有很好的推广价值和研究意义。

[1] 陈国华. 基于Excel的报表引擎的研究与设计[J] . 计算机工程与设计,2004,25(4):526.

[3] 东方人华,邹敬. Visual C#.NET 范例入门与提高[M] . 北京:清华大学出版社, 2003.

[4] 吴雷,袁兆山,李超. B/S结构下的复杂报表实现技术的研究[J] . 计算机应用研究,2006,23(5):83-85.

[5] 吴铂,吴秀丽,孙树栋. 基于设计模式的报表生成组件的设计与实现[J] . 计算机工程与应用,2004, 40(16):113-115,118.

[6] Timothy Zapawa. Excel Advanced Report Development[M] .Publishing House of Electronics Industry, 2006.1.

[7] R. Kishore, H. Zhang, R. Ramesh. Enterprise integration using the agent paradigm: foundations of multi-agent-based integrative business information systems[J] . Decision Support Systems, 2006, 42(1): 48-78.

猜你喜欢
报表逻辑管理系统
刑事印证证明准确达成的逻辑反思
基于James的院内邮件管理系统的实现
逻辑
创新的逻辑
基于LED联动显示的违停管理系统
女人买买买的神逻辑
海盾压载水管理系统
镇长看报表
基于RFID的仓储管理系统实现
月度报表