admin 管理员组

文章数量: 1184232


2024年4月18日发(作者:wps iferror函数的使用方法)

计算机时代201 1年第1期 ・ 33 ・ 

OWC系列控件的图形化开发与应用 

丁剑博 ,杨昆 

(1_中国石油兰州石化分公司自动化研究院,甘肃兰州730060;2.兰州理工大学) 

摘要:决策支持系统涉及动态生成图表的问题,而在B/S模式下,如何动态生成图表并打印一直是个难点。OWC组件 

在B/S下能很好地实现动态生成图表和报表打印等功能。文章着重讨论了OWC组件在基于B/S的决策支持系统中的应 

用.通过分析实例代码详细介绍了利用该组件的OWC.Chart对象在服务器端生成各种复杂的动态图表的方法与过程。 

关键词:0wC(0币ce Web Components);ChChart;ChSeries;ChartSpace 

Graphical Development and Application of OWC Series 

DING Jian—bo。一,YANG Kun 

( .Automation Research Institute,Lanzhou Petrochemical Branch,PetroChirut Co.Ltd,Lanzhou,Gansu 73006o,China; 

2.Lanzhou University of Technology) 

Abstract:Decision support system involves the problem of generating charts dynamically,but how tO dynamically generate charts 

and print them is always a diiculft point in B/S mode1.OWC components can well achieve the functions of generating charts 

dynamically,printing reports,etc.in B/S mode1.We emphatically discuss the application of OWC components in B/S—based 

decision support system,and detailedly introduce the method and process of using OWC.Chart object of the components to 

generate various kinds of complex dynamic charts on the server side by analyzing the example code. 

Key words:OWC(Ofifce Web Components);ChChan;ChSeries;ChartSpace 

0引言 

图表生成是管理信息系统的一个重要功能。在OWC诞生 

之前,将图表嵌入Web页面是非常困难的事情,开发人员通常 

会采用Plugin技术或者ActiveX打印控件来实现图表的页面嵌 

入和排版打印,但这些方法不能够快速灵活地解决各种图表的 

生成,不能与数据库有很好的交互,需要程序设计人员编写大 

量的代码。在Asp.net中利用OWC组件可以轻松实现各种图 

表在Web页面中的展现。OWC首次出现于Oficfe 2000,即 

OWC 9.0,微软发布的Microsoft Ofice 2000中包含了OWC f

组件。 

要组件:电子数据表格、图表、数据透视表和数据源。每个组件 

包含相关的ActiveX控件(Spreadsheet,Chart,PivotTable List和 

Data Source)。其中Data Source用于将其他组件绑定到一个 

数据源,但对于在Intemet Explorer中查看网页的用户, 

DataSource是不可见的;它和其他控件一起包含在Oficfe的 

DLL中,通过一个相关联的对象Data--SourceControl产生作 

用。图表组件是Microsoft Ofice使用的数据绑定ActfiveX控 

件,用于实现向Web页添加图表的功能,支持Excel中大部分二 

维图表、极坐标图表(如饼图和雷达图)以及组合图表(如两轴线 

柱图)。数据表随同图表发布,图表随数据的变化而改变。 

这些控件还能够读写Excel的HTML格式的文件,可将当前的 

1 oWC组件 

OWC可用来绘制绝大部分的图形,是微软公司针对Web 

数据加载到Excel中。 

在Ofice中开发的一套在线分析处理(fOLAP)组件,主要用于 

在Web上发布电子表格,动态生成图表和数据库等。OWC 

能将部分Ofice的功能扩展到Web上,是一个优秀的服务器 f

端图表引擎,具有与Excel同样强大的图表绘制能力。它能 

够在服务器端动态生成GIF或JPG格式的图表。在决策支持 

系统中,如何将各种数据以图表的形式展现给决策者是个重 

2 oWC的主要对象、属性、方法 

OWC提供了面积图、柱状图、条形图、折线图、平滑曲线 

图、饼图、圆环图、股价图、散点图、雷达图。其中有些图形是二 

维或三维的,有些图形又有多种表现方式,比如柱状图可以是 

单柱状图,或簇形柱状图,或多种颜色的柱状图等。具体的图 

形类型可用OWCDCH11.CHM文件中的ChartChartTypeEnum 

枚举。 

OWC的主要对象、属性、方法。 

要的问题,OWC组件正好能够很好地解决这一问题:它可以 

将用户输入的数据以符种图表形式通过浏览器(Internet 

Explorer)展现给决策者,也可以在IE中与网页交互,可以排序、 

ChartSpace对象:图形容器对象,也是顶层对象。如果要 

使用OWC绘制图形,至少要创建一个ChartSpace对象。所谓 

筛选、公式值的展开和折叠、透视数据等,以满足用户或决策者 

的需求。 

容器,就是说ChartSpace对象中可以包含多个图形对象,最多 

l6个。 

OWC控件的设计目的是为众多的控件容器提供交互的电 

子表格建模,数据报表和数据可视化功能。OWC包含四个主 

ChChart对象、ChCharts集合、ChCharts.Add()方法:ChChart 

34・ Computer Era No.1 201 1 

是图形对象。一个柱状图、饼状图、散点图等都是一个图形对 

(7)使用<IMG>标记将GIF图像发布到网页上。 

象,多个图形对象构成ChCharts集合。ChartSpace对象就包含 

下面将以源代码的形式详细介绍如何将炼油厂的原油加 

炼油综合能耗、炼油厂用水量、轻油收率、炼油加工损失 

个ChCharts集合,这些ChChart之间互相叠加,比如簇状条形 

工量、

图就是多个单柱状图的叠加,圆环套圆环图就是两个单圆环图 

率等指标以图表的形式展示出来,示例代码基于OWCll+VS. 

的叠加。通过ChCharts.Add()方法可添加一个图形。 

NET+C# 

ChSeries对象、ChSeriesCollection集合、ChSeriesColtection. 

Add()方法:查帮助文件可知,一个ChSeries对象表示图中的一 

个系列。实际上,可以这样理解,当图形容器中包含多个图形 

时,一个ChSeries对象就表示其中的一个图形,可以通过 

ChSeriesCollection集合,使用数组的方式访问各个ChSeries,比 

如ChSeriesCollection[0]表示访问第一个图形。使用 

ChSeriesCollection.Add()方法可在当前容器中新增一个图形。 

Point属性和Points集合:一个Point代表图形中的一个部 

分,比如柱状图的一条柱、饼状图的一个扇区等。ChChart对象 

提供Points集合,可以使用数组的形式访问各个Point,比如 

Points[0]表示访问第一个部分。 

Interior属性:代表一个形状的内部空间。比如,ChartSpace 

对象的Interior属性代表图形容器内图形外的空间,一个扇区 

Interior属性表示该扇区的内部空间。该属性在设置图形各个 

部分的颜色时起到重要作用。 

OWC主要有以下特点: 

(1)owc ̄,够支持近50种图表类型,包括曲线图、折线图 

等,并指定显示图表是否带数据点; 

(2)可以灵活设置图表的各个属性,包括图表标题、横纵坐 

标和输出图片的大小等,还可以对所显示的文字指定字体、字 

号、字形和颜色; 

(3)同一张图表中可以显示2条以上的曲线,实现数据对比。 

OWC.Chart对象的主要属性和方法: 

Chart.Add()用于创建一个图表,参数表示所创建图表的 

索引; 

Chart.Type ̄定图表类型(如折线、曲线等); 

Chart.Axes坐标轴,通过它控制坐标轴的属性; 

Chart.HasTitle是否有标题; 

Chart.Title.Caption标题名称; 

Chart.Constants类中的命名常数; 

Chart.SeriesColkction.Add()添加一个Series序列; 

Chart.SeriesColkction.Caption Series的标题; 

Chart.SeriesColkction.SetData给Series赋值; 

Chart.HasLegend是否有标注; 

Chart.ExportPicture0将图表导出到服务器指定目录。 

3 OWC组件在VS.NET中的实例开发 

用OWC生成动态图表的过程(步骤): 

(1)从数据库中取出相应的数据; 

(2)创建OWC图表; 

(3)设定数据系列; 

(4)给数据系列赋值; 

(5)按要求设计图表的格式; 

(6)根据OWC图表创建GIF图像; 

炼油厂对主要指标综合分析图的源代码例程: 

<add key=”DBConnection ’value=”Provider=SQLOLEDB; 

server=(Ioca1);user id=sa;password=sasasasa; 

Database=TargIetMgtDev”/> 

/,连接对标平台数据库: 

protected System.Web.UI.WebControls.Label Label; 

//在html中添加一个Label,将绘制的图表放置在这个Label中: 

protected int iWidth; 

protected int iHeight; 

protected int iChartT ̄ pe; 

,,分别定义宽度、高度、图表显示类型三个参数便于调试: 

int i: 

string strCategory=””: 

for(i=1:I<=12:i++) 

(strCategory+=i.ToString()+ ̄t’: 

)://定义X轴为1至12循环,也就是对应1至12月: 

string strSql=…’: 

string strAttribName=””: 

DataTable oDt=new DataTable0; 

//定义数据表oDt/ ̄4建新数据表 

strSql=’’Select From ObjectData—StairFirstDiv where ID=1 66“: 

//查询一级指标实践值ID号为166(FJ度原油加工量)的数值: 

oDt=oSqlHelper.ExecuteDataTable(Globa1.strDBC0nnecti0n. 

CommandType.Text,strSq1); 

,,SQL语句查询到的结果 

string strValue=… : 

for(i=1;i≤12I.++)//执行1至12间的循环: 

strAttribName=”StairFirst”+1.ToString0+”data”: 

//一级指标实践值的字段为StairFirst”i”data,i在(1-12)之间: 

strValue+=Convert.ToDouble(oDt.Rows[0][strAttribName]). 

ToString(”f2“)+” : 

//读取符合查询条件第一行数值并且小数点后保留两位: 

ChartSpace ThisChart=new ChartSpaceClass(): 

/,新建绘图空间对象: 

ChChart ThisChChart=ThisChart1.Charts.Add(0); 

//在绘图空间新建图形对象 

ChSeries ThisChSeries=ThisChChart.Se riesCoIIection.Add(0); 

//在图表中加入数据系列 

ThisChChart.HasLegend=true: 

//显示图例 

ThisChChart Legend.Position=ChartLegendPositionEnum. 

chLegendPositionBottom; 

//图列位置放置在容器的底部: 

ThisChChart.Legend.Font.Size=9; 

//图例的标题的字体大小设为9号字: 

ThisChChart.HasTltle=true:/,显示标题内容: 

ThisChChart Title.Caption=”原油加工量分析”: 

计算机时代2011年第1期 

,/分别为图例加上相应的标题: 

ThisChart.ChartLayout=ChartChartLayoutEnum 

・ 35 ・ 

Label1.Text=”<imgsrc=’√…/./../WebCharts/RefinaryAnalysis.gif'>” 

,,把名为RefinaryAnalysis.g_f的图表添加到Image; 

chChartLayoutAutomatic; 

运行效果如图1和图2N示。 

蠹 篓警 … 0 

/,将图例在容器内的排列方式设置为自动排列: 

ThisChart1 ChartWrapCount=2;//容器内每行显示2个图例: 

ThisChChart1.Axes[0].HasTitle=true;//指定图表是否需要图例: 

ThisChCha ̄1.Axes[0].Title.Caption=”月份”://X轴的单位是为月份: 

缝 兰猢 缒公司至越辩糕麓攥举岛 一… 

蠡 一 : 黼 慧 — … 

ThisChChart1.Axes[0].Title.Font.Size=9;IIX轴字体为9号: 

ThisChChart1.xes[1].A"ittle.Caption=”单位:万吨”: 轴的单位是万吨: 

ThisChChart1.xAes[1].Title.Font.Size=9;,,Y轴的字体为9号: 

ThisChChart1.Type=Cha ̄ChartTypeEnum 

chChartrypeColumnClustered;,/柱状图: 

ThisChChart2.Type=Cha ̄ChartTypeEnum.chChartTypeLine; 

,/折线趋势图; 

ThisChCha ̄3.Type=ChartChartTypeEnum.chChartTypePie;|}饼圉 

这里用到的参数iChartType的主要作用是,快速切换不同 

类型的图形,当用户要改变显示的图形类型时不需要更改源代 

码,只需要调整文本文件显示代号1、2、3即可(1代表柱状图、2 

代表折线趋势图、3代表饼图)。 

ThisChChart.Seriescollecti0n【0】.DataLabelsCollection Add(): 

//设置在显示图例的上方显示对应数值: 

ThisChChart.Rotation=O; 

ThisChChart.Inclinati0n=0: 

//设置图例的旋转及弯曲角度为Oi 

ThisChChart1.PlotArea.Interior.Color=’ #ffccff'。: 

//绘图空间的背景颜色为粉红色: 

ThisChChart.Overlap=0; 

//图形的重叠部分为0: 

ThisChSeries SetData(ChartDimensionsEnum 

chDimSeriesNames,ChartSpecialDataSourcesEnum 

chDataLitera1.GetHashC0de(),”原油加工量”): 

『/给定series的名字原油加工量 

ThisChSeries SetData(ChartDimensionsEnum.chDimCategories, 

ChartSpeciaIDataSourcesEnum.chDataLitera1.GetHashCode(), 

strCategory): 

f|给定分类 

ThisChSeries SetData(ChartDimensionsEnum.chDimValues, 

ChartSpeciaIDataSourcesEnum chDataLiterat GetHashCode0, 

strValue); 

,,给图例相应指标的值植入图表(strValue所对应的指标): 

ThisChSeries Trendlines[0].IsDispIayIngRSquared=true; 

『/是否显示标题: 

//-I'hisChSeries.Trendlines[0].Caption=“原油加工量趋势”: 

, 给标题赋具体名称: 

ThisChart1.ExportPicture(Server.MapPath(this.Request 

Applicati0nPath)+”\\WebCharts\\RefinaryAnalysis.gif’,”gir。, 

iWidth,iHeight); 

//在客户端导出图像文件至相对路径,当对运行结果显示的图片大 

小不满意时不需要修改源代码,只需要调整文本文件中iWidth、 

iHeight两个参数就可以得到满意的显示效果。 

七 , 一 _i 鬻 l; F卜=薹麓一 嬲1l 

” 

{ 聪 瓣 ” l 

蠹 一 卜 _ 

l I 

麓豁 麓惑 鬻托骞 

图1炼油厂对标指标折线趋势分析图 

图2炼油厂对标指标柱状分析图 

4结束语 

利用OWC图表组件可在web服务器端生成柱状图、折线 

图、饼图等多种图形,并将它们和数据库查询结果集绑定,实现 

图表与数据库的完美结合,完成各种图表的动态生成。 

通过本文所述实例,可以看到OWC组件的强大功能。在 

Web系统中使用这些控件,可增强系统的统计功能,有利于系 

统的快速集成和开发。 

参考文献: 

[1】Microsoft.MSOWCVBA chin[Z],1999. 

【2】Microsoft.Use XML Data with the Chart Component[EB/OL]. 

【3】Microsoft.Create A Combination Chart with the Chart Web Com2 

pon。“ 【EB/OL]’ 


本文标签: 图表 数据 图形 显示