APP下载

B/S下一种报表图形化方法的研究与实现

2016-01-27周国祥

关键词:S架构信息管理系统

高 涵, 周国祥, 石 雷

(合肥工业大学 计算机与信息学院,安徽 合肥 230009)



B/S下一种报表图形化方法的研究与实现

高涵,周国祥,石雷

(合肥工业大学 计算机与信息学院,安徽 合肥230009)

摘要:面向中小企业应用系统的开发中,报表是系统重要的组成部分。文章分析了一些主流报表制作工具及报表生成方法,通过对报表生成规则的了解,研究了MsChart控件在报表图形化方面的应用,并给出了报表数据图形化的方法。该系统可为用户提供直观、具体的报表图形化服务,对一般企业用户具有通用性。

关键词:信息管理系统;报表生成系统;B/S架构;MsChart控件;报表图形化

言在中小企业信息化系统广泛应用的今天,报表作为一般信息系统的通用需求,是办公自动化及信息管理系统、决策支持系统中信息处理和交互的主要方法之一。目前,我国各个领域的基础数据都已基本完善,数据利用日益增多,大量统计分析类数据需要呈现给不同的用户,如何快速高效地把业务需求转变成统计报表是当前信息管理系统需要解决的重要问题。报表图形化方法是一种对数据结果直观的展示,非技术开发人员可以通过报表图形化工具自定义报表的查询内容和查询展现方式,并可供其他用户查看分析[1]。

MsChart(Microsoft Chart Control)是一款在图形显示方面功能强大的Com组件,给图表统计和报表图形化提供了一个很好的解决办法[2]。MsChart支持多种图形显示,以便开发人员选择不同的图形来显示各个方面的报表,如柱状图可以显示销售金额和销售件数的对比,饼图可以显示销售份额的对比,而曲线图可以显示价位走势等;同时在图的显示信息方面还提供图形上各个点的属性操作,如可以定义图形上各个点、标签、图形的提示信息以及超链接等[3]。本文将结合MsChart控件的应用来实现一种B/S架构下的报表图形化方法。

1系统需求

某珠宝销售公司为适应市场需要和加快公司信息化建设,提出了基于核心数据库和3层架构的货品仓储及销售管理信息系统需求。3层架构是指表示层(user interface, UI)、业务逻辑层(business logic layer, BLL)和数据访问层(data access layer, DAL)[4]。其中表示层主要用来支持用户信息查询、流程管理、查询报表、客户及网点管理等主要功能;业务逻辑层主要由3个应用支撑组件组成,分别是业务应用逻辑、系统管理应用逻辑、组合查询应用逻辑;数据访问层主要实现了货品、原材料、包装品赠品、维修品信息的交换与共享。查询报表主要是用户对库存、物流、价格等信息的查询与结果打印,并可以根据查询结果直观地显示统计图。该系统采用.Net+SQL Server开发,整个平台的架构图如图1所示。

图1 某珠宝公司货品仓储及销售平台架构图

2报表生成分析

当前流行的智能报表系统中,水晶报表作为国际性的商业智能软件,能够从任意数据源构造报表,并能以表格、图表、分组等各种形式展现,功能强大、弹性高。但由于我国报表的特点与国际上有所差异,水晶报表没有考虑到这些特殊情况,也没有充分了解报表制作人员的习惯等,在实际应用中无法满足企业的需求[5]。国内具有代表性的润乾报表和用友华表,拥有优秀的报表设计系统,充分满足了国内企业对报表格式的需要;但其功能单一,大部分是财务类报表,且很难制作格式灵活的报表,缺乏数据库的数据分析功能[6]。

报表的生成过程是设计一个逻辑完备的解析生成器,根据用户定义的报表类型及属性需求,读取对应的数据库中的基本数据,再按照显示格式写入Excel文件[7]。在报表图形化方面,目前市场上没有较为统一的商业软件,一般.Net中统计图表动态绘制需要在GridView中进行较复杂的操作,效果也一般。此外可以引用dotnetCHARTING 控件对系统报表图进行调用,此图表控件对中文支持比较好,对.Net1.1和2.0也都支持,但是比较耗费性能。本文采用MsChart控件,可根据业务需求开发出不同类型的、丰富多彩的显示图,同时对常用的折线图、饼图和柱状图有较好的支持。

3MsChart控件功能简介

在VS2008中安装完MsChart控件后可在工具箱中选择Chart控件。

ChartAreas是一个图表的绘图区,如在一幅画中显示多个绘图。每个绘图区域包含独立的图表组、数据源,适用于多个图表类型在一个绘图区不兼容的情况。对于每一个绘图区域,可以设置各自的属性,如X和Y轴属性、背景等。

Titles是图表的标题集合,即图表的标题配置,同样可以添加多个标题。

Annotations是一个图形注解对象的集合,所谓注解对象,类似于对某个点的说明。一个图形上可以拥有多个注解对象,可以添加多种图形样式的注解对象,包括常见的箭头、矩形、图片等注解符号;通过各个注解对象的属性,可以方便地设置注解对象的放置位置、呈现的颜色、大小、文字内容样式等常见属性。

Legends是一个图例的集合,即标注图形中各个线条或颜色的含义,同样,一个图片也可以包含多个图例说明。

Series是表数据对象集合,为最重要的属性,即实际的绘图数据区域,实际呈现的图形形状由此集合中的每一个图表来构成,可以往集合里面添加多个图表,每一个图表可以有自己的绘制形状、样式、独立的数据等。

此外,MsChart 还有几个常用的重要属性和对象,如DataSourceID(MsChart 的数据源)、palette (图表外观定义)、width(MsChart的宽度)、height(MsChart 的高度)、points(数据点集合)等等[8]。

在实际使用中,MSChart控件有3种方法来获取数据[9],数据绑定的常用事件如下:

Series1.Points.DataBind()

绑定数据点集合,如果要在一个MsChart 控件的一个绘图区(ChartArea)内添加多个不同数据源的图表,可用此方法主动绑定数据集合,将表中指定字段的值绑定到指定的坐标轴上;也可以给整个MsChart 绑定一个数据源,这样MsChart 中的图表全部可以使用该数据源作为统计来源。

4报表图形化的研究与实现

4.1 方法研究

本文所研究的报表图形化工具,是根据数据源生成Excel报表,再通过MsChart控件将报表以统计图的形式反映给用户的方法,主要研究以下几个问题:

(1) 文本报表的生成存储。在选定报表种类之后用户可以为部分属性列提供过滤值,定制报表的生成数据,即根据读取到用户选定的过滤值去数据库中读取数据,根据选定的属性生成报表表头并将数据写入报表中。过滤值的设定主要分成时间段的设定和属性列的设定。

(2) 文本报表转化成统计图。主要根据所选报表类型决定生成统计图的类型,用户选定报表类型的同时也就确定了MsChart控件中的图表类型,即一种文本报表对应一种图表类型;将文本报表中的属性和数据传到自定义Chart控件中,再通过调用生成当前图类的自定义Chart控件生成相应的统计图。

(3) 统计图的保存及显示。在服务器端建立一个文件夹专门保存即时生成的统计图,当新增报表和统计图时,根据代码中的命名规则将新建的统计图保存在服务器端的文件夹中,并在数据库关于报表的表中记录统计图的文件名。

4.2 具体实现方法

根据上述分析,报表图形化工具的实现可分为3个步骤。

(1) 用户通过Web页面选定报表类型。工具定义了网点库存份额对比表、产品货龄统计表、网点销售分价位统计明细表、网店销售分货龄统计明细表、采购计划表、货品配置表6种报表类型。在新增报表一项上调用winforreportout自定义控件,在此控件中可以选择属性过滤值,如时间段、网点、货品类型、需要写入报表的属性等,根据用户的输入,服务器端将数据库中符合的数据放入DataSet中用来生成文本报表。生成文本报表的流程如图2所示。

(2) 在winforreportout控件窗体中,用户可以通过勾选生成统计图项来即时生成报表的统计图。每种报表对应一种或多种图表,如网店销售库存份额对比表中的金额、件数对比对应柱状图、份额对比对应饼状图,产品货龄统计表对应折线图等,每种图的生成各自定义了一个控件,不同的报表类型生成统计图的数量不同。其中柱状图和饼状图的生成较为简单,只需读取相应的属性及属性值,这些值在生成文本报表的同时已经写入到相关的变量中;将该变量的值传到Chart控件中,再将指定字段的值绑定到指定的坐标轴上即可。折线图的生成稍微复杂一些,需要根据不同的报表类型获取不同的DataTable,如货龄表在获取货龄的DataTable后根据货龄分段在每个点取值,再连成折线即可生成统计图。生成统计图的流程如图3所示。

图2 生成文本报表的流程

图3 生成统计图的流程

生成统计图的代码如下:

public void CreatePicture()

{

try

{

ContrastColumnChart-chart.Titles["ChartTitle"].Text=ChartTitle;

ContrastColumnChart-chart.Series["Serie1"].Points.DataBindXY(ChartX, ChartY);

ContrastColumnChart-chart.ChartAreas["ChartArea1"].AxisX.Interval=1;

ContrastColumnChart-chart.ChartAreas["ChartArea1"].AxisX.IntervalOffset=1;

ContrastColumnChart-chart.ChartAreas["ChartArea1"].AxisX.LabelStyle.IsStaggered=true;

ContrastColumnChart-chart.ChartAreas["ChartArea1"].AxisY.Title=YTitle;

ContrastColumnChart-winMore.UpdateContent();

ContrastColumnChart-chart.SaveImage(ChartFileName);

}

代码中首先将传递来的ChartTitle值赋值给图片的标题值,再将数组ChartX、ChartY中的值绑定到坐标轴X、Y上,分别设置X轴的间距、起始位置和交错显示以及Y轴的文字标题,最后按照前台定义的图片规格生成相应的统计图。

(3) 生成的统计图保存在服务器端,并通过在数据库报表的信息表中定义一个bool值ReportIHasPic来判断该报表是否有统计图,另有一个int值ReportIPicNum来标识该报表所含的图片数量。当用户需要显示统计图时,调用WinChartDisplay自定义控件,根据传递来的报表类型及报表ID号,在服务器端找出符合特定命名规则的统计图并显示。

报表图形化方法整体框架及实现如图4所示。

图4 报表图形化实现流程

5结束语

在中小企业应用系统中,报表的生成打印一直是重要的组成部分之一。本文在一般报表生成的基础上重点研究了图形化方法,目前所建立的解决方案已成功部署在某珠宝企业中,用户可以按需打印报表并根据报表生成统计图,极大地提高了工作效率,取得了很好的效果。

[参考文献]

[1]崔永生,曹苗苗. 一种图形化报表工具的设计与实现[J]. 信息技术与信息化,2012(4):65-68.

[2]李怀川,吴孟春. 利用微软图表控件MsChart实现紫外线数据图形化显示[J]. 计算机与网络,2012(12):47-50.

[3]朱健,庄科旻,周丹,等. MsChart在气象数据图形化显示中的应用[J]. 浙江气象,2009(Z1):58-60.

[4]高扬.基于.NET平台的三层架构软件框架的设计与实现[J]. 计算机技术与发展,2011,21(2):77-80,85.

[5]吴银卫. 通用报表生成技术研究与应用[D]. 北京:北京交通大学,2010.

[6]经伟,周国祥. 面向中小企业智能报表系统的研究与实现[J]. 合肥工业大学学报:自然科学版,2012,35(7):904-907.

[7]李云亮,李相枢..NET环境下两种Web报表解决方案的对比分析[J]. 计算机应用研究,2004,21(6):212-214.

[8]孙仁鹏. 利用MsChart控件动态生成通用在线图表[J]. 软件导刊,2011(1):170-171.

[9]张成才,王永信. 利用MsChart控件动态生成统计图[J]. 郑州大学学报:工学版,2007,28(3):73-75.

(责任编辑胡亚敏)

周国祥(1956-),男,安徽合肥人,合肥工业大学教授,硕士生导师.

Study and implementation of a graphical report tool in B/S

GAO Han,ZHOU Guo-xiang,SHI Lei

(School of Computer and Information, Hefei University of Technology, Hefei 230009, China)

Abstract:During the application system development for small and medium-sized enterprises, a variety of reports are an important part of the system. In this paper, some mainstream methods in report generation are analyzed. Based on the rules of report generation, the application of MsChart control in graphical report is analyzed, and the method of converting report data to chart is proposed. The system can provide users with intuitive and specific graphical reports, and it is applicable for general business users.

Key words:information management system; report generator; B/S structure; MsChart control; graphical report

中图分类号:TP317.1

文献标识码:A

文章编号:1003-5060(2015)03-0341-04

doi:10.3969/j.issn.1003-5060.2015.03.011

作者简介:高涵(1988-),男,安徽合肥人,合肥工业大学硕士生;

基金项目:国家自然科学基金重点资助项目(60633060)

收稿日期:2013-12-20;修回日期:2014-03-21

猜你喜欢

S架构信息管理系统
三维可视化信息管理系统在选煤生产中的应用
信息管理系统在工程项目管理的应用
基于三维TGIS的高速公路综合信息管理系统
SaaS模式下的房地产中介公司信息管理系统
高速公路绿色通道信息管理系统开发与实践
B/S架构下的学生信息管理系统的设计
学生会管理系统的设计与实现
人事档案信息管理系统的设计与实现
基于ASP技术下的大学生跳蚤书街平台的设计与实施
基于B/S架构的高校实验管理平台的设计与实现