摘 要:決策支持系統(tǒng)中會涉及到動態(tài)生成圖表的問題,而在B/S模式下,如何動態(tài)生成圖表并打印一直是個難點。 OWC組件在B/S下卻能很好地實現(xiàn)動態(tài)生成圖表和報表打印等功能。著重討論OWC組件在基于B/S的決策支持系統(tǒng)中的應用,即利用該組件的OWC.Chart對象在服務器端生成各種復雜的動態(tài)圖表,并分析其優(yōu)缺點,最后給出實例代碼。
關鍵詞:OWC;動態(tài)圖表;B/S;決策支持系統(tǒng)
中圖分類號:TP311 文獻標識碼:B 文章編號:1004-373X(2008)02-104-03
Application of OWC in the Decision Support System Based on B/S
ZHOU Ji,ZHANG Huijie,DONG Lili
(Information Control Engineering College,Xi′an University of Architecture Technology,Xi′an,710055,China)
Abstract:The problem of dynamic chart can be concerned in decision support system.In the B/S model,how to form dynamic chart is difficult.However,Office Web Components(OWC) can implement these functions,such as forming dynamic chart and printing report in the B/S.This paper discusses application ofOWC in the DSS based on B/S:the problem on how to form complex dynamic chart in the server with the object of OWC.Chart.Then analyzes advantages and disadvantages of OWC.The demo codes are provided in this paper.
Keywords:OWC;dynamic chart;B/S;decision support system
1 引 言
OWC組件是微軟公司針對Web應用而在Office中開發(fā)的一套在線分析處理(OLAP)組件,其主要用于在Web上發(fā)布電子表格,動態(tài)生成圖表和數(shù)據(jù)庫等。而在決策支持系統(tǒng)中,如何將各種數(shù)據(jù)以圖表的形式展現(xiàn)給決策者是個關鍵的問題,OWC組件正好能夠很好地解決這一問題:他將用戶輸入的數(shù)據(jù)通過瀏覽器(Internet Explorer)以各種圖表形式展現(xiàn)給決策者,也可以在IE中與網(wǎng)頁交互,可以排序、篩選、輸入公式計算的值展開和折疊細節(jié)、透視數(shù)據(jù)等,以便滿足用戶或決策者的需求[1]。
2 Office Web Components組件
OWC(Office Web Components) COM控件的設計目的是為眾多的控件容器提供交互的電子表格建模,數(shù)據(jù)報表和數(shù)據(jù)可視化功能。OWC包含4個主要組件:電子數(shù)據(jù)表格、圖表、數(shù)據(jù)透視表和數(shù)據(jù)源。每個組件包含相關的ActiveX 控件(Spreadsheet,Chart,PivotTable List 和Data Source) 。其中Data Source 用于將其他組件綁定到一個數(shù)據(jù)源,但對于在Internet Explorer 中查看網(wǎng)頁的用戶,DataSource 是不可見的;其通過一個相關聯(lián)的對象Data-SourceControl 產(chǎn)生作用,他和其他控件一起包含在Office的DLL中。圖表組件是Microsoft Office 使用的數(shù)據(jù)綁定ActiveX 控件,用于實現(xiàn)向Web 頁添加圖表的功能,支持Excel 2000中大部分二維圖表、極坐標圖表(如餅圖和雷達圖) 以及組合圖表(如兩軸線—柱圖) 。數(shù)據(jù)表隨同圖表發(fā)布,圖表隨數(shù)據(jù)的變化而改變。這些控件還能夠讀寫Excel的HTML格式的文件,可將當前的數(shù)據(jù)加載到Excel中[3]。
[BT3+*3]2.1 OWC組件的安裝環(huán)境與要求
微軟OWC組件運行在Windows服務器上,只要在服務器上正常安裝Microsoft Office(為節(jié)省空間,用戶可以只選擇安裝Excel),即可在服務器上自行安裝微軟OWC組件。檢驗此組件在服務器上是否安裝正確的方法是在服務器的注冊表中查找關鍵字OWC,如果在其中找到MSOWC.DLL的注冊信息,則說明此服務器中已經(jīng)正確安裝和注冊了OWC組件。如果用戶不想在Windows上安裝Office,也可將Office光盤中的MSOWC.DLL文件拷入服務器的系統(tǒng)目錄中,然后在運行窗口中執(zhí)行REGSVR32 path /MSOWC.DLL,其中path為MSOWC.DLL文件所在的目錄名[4]。
OWC組件目前有9.0,10.0和11.0三個版本,分別集成在Office 2000,Office XP和Office 2003中,OWC組件要求使用IE 4.0或更高的版本。使用Windows 98,NT或2000操作系統(tǒng),在安裝OWC前,需要對不支持OWC組件的操作系統(tǒng)如Windows 2000 Server 安裝相應的補丁。
[BT3+*3]2.2 OWC組件的主要功能模塊及特點
微軟OWC是一個標準的32位COM組件,可以為IE,VB,VC等眾多的控件容器提供交互的電子表格建模,數(shù)據(jù)報表和數(shù)據(jù)可視化功能。該組件主要由4個對象組成,分別是Spreadsheet對象、Chart對象、Pivot-Table對象和Data Source對象,除Data Source對象外,其余3個對象的功能可以認為是Excel中對應 Spreadsheet,Charting,PivotTable在Web中的簡單應用。由于本文探討的是OWC在DSS中的應用,因此只考慮OWC組件的Chart對象(OWC.Chart)部分。OWC.Chart對象能在Web服務器生成柱狀圖、條狀圖、折線圖等多種圖形,能和數(shù)據(jù)庫查詢結(jié)果集綁定。實現(xiàn)數(shù)據(jù)庫與圖表的完美結(jié)合[2]。
OWC主要有以下特點:
(1) OWC能夠支持近50種圖表類型,包括曲線圖、折線圖等,并給指定顯示圖表是否帶數(shù)據(jù)點;
(2) 可以靈活設置圖表的各個屬性,包括圖表標題,橫縱坐標,輸出圖片的大小等,還可以對所顯示的文字指定字體、字號、字形和顏色;
(3) 同一張圖表中可以顯示2條以上的曲線,實現(xiàn)數(shù)據(jù)對比。
[BT3+*3]2.3 OWC.Chart對象的主要屬性和方法
Chart.Add()用于創(chuàng)建一個圖表,參數(shù)表示所創(chuàng)建圖表的索引;
Chart.Type指定圖表類型(如折線,曲線等);
Chart.Axes坐標軸,通過他控制坐標軸的屬性;
Chart.HasTitle是否有標題;
Chart.Title.Caption標題名稱;
Chart.Constants類中的命名常數(shù);
Chart.SeriesCollection.Add()添加一個Series序列;
Chart.SeriesCollection.Caption Series的標題;
Chart.SeriesCollection.SetData 給Series賦值;
Chart.HasLegend是否有標注;
Chart.ExportPicture()將圖表導出到服務器指定目錄。
3 OWC組件在DSS中的應用
3.1 引用數(shù)據(jù)描述
Visual Studio 2005+SQL Server 2005 的組合目前已得到廣泛的應用,在企事業(yè)單位的信息管理系統(tǒng)中也發(fā)揮著重要作用。在決策支持系統(tǒng)研究項目中所涉及的數(shù)據(jù)庫也采用了SQL Server 2005,在該項目中要將數(shù)據(jù)以圖表的形式展現(xiàn)給決策者。
[BT3+*3]3.2 用OWC生成動態(tài)圖表的過程(步驟)
(1)從數(shù)據(jù)庫中取出相應的數(shù)據(jù);
(2)創(chuàng)建OWC 圖表;
(3)設定數(shù)據(jù)系列;
(4)給數(shù)據(jù)系列賦值;
(5)按要求設計圖表的格式;
(6)根據(jù)OWC 圖表創(chuàng)建GIF 圖像;
(7)使用< IMG> 標記將GIF 圖像發(fā)布到網(wǎng)頁上。
3.3 發(fā)布程序
發(fā)布程序如下:
OWC10.ChartSpace objCSpace = new OWC10.ChartSpaceClass();
OWC10.ChChart objChart = objCSpace.Charts.Add(0);
objChart.Type = OWC10.ChartChartTypeEnum.chChartTypeLine;[JY]//折線圖
string newpic=Server.MapPath(\"../Reportpicture/\"+DateTime.Now.Ticks.ToString()+\".gif\");
stringnewpic1 = \"../Reportpicture/\" + DateTime.Now.Ticks.ToString() +\".gif\";
objChart.HasLegend = true;[JY]//指定圖表是否需要圖例
objChart.HasTitle = true;[JY]//給定標題
objChart.Title.Caption = name;[JY]//圖表標題,其中name為變量
objChart.Axes[0].HasTitle = true;
objChart.Axes[0].Title.Caption = \"月份\";[JY]//chart的橫坐標標題
objChart.Axes[1].HasTitle = true;
objChart.Axes[1].Title.Caption = \"萬元\";[JY]//chart的縱坐標標題
objChart.SeriesCollection.Add(0);[JY]//chart中的曲線標號
objChart.SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimSeriesNames,+(int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral,\"月預算值累計\"); [JY]//chart中曲線名稱
objChart.SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimCategories,+(int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral,\"1\" +′t′ + \"2\" +′t′ + \"3\" +′t′ + \"4\" +′t′ + \"5\" +′t′ + \"6\" +′t′ + \"7\" +′t′ + \"8\" +′t′ + \"9\" +′t′ + \"10\" +′t′ + \"11\" +′t′ + \"12\" +′t′); [JY]//曲線中的橫坐標數(shù)值
objChart.SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimValues,(int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral,Convert.ToString(d[0]) +′t′ + Convert.ToString(d[1]) +′t′ + Convert.ToString(d[2]) +′t′ + Convert.ToString(d[3]) +′t′ + Convert.ToString(d[4]) +′t′ + Convert.ToString(d[5]) +′t′ + Convert.ToString(d[6]) +′t′+ Convert.ToString(d[7]) +′t′ + Convert.ToString(d[8]) +′t′ + Convert.ToString(d[9]) +′t′ + Convert.ToString(d[10]) +′t′ + Convert.ToString(d[11]) +′t′);[JY]//顯示各月的計劃月累計值
objCSpace.ExportPicture(newpic,\"GIF\",360,330);[JY]// 在客戶端輸出圖片
objCSpace.Border.Color = \"#B3E08D\"; [JY]//圖表邊框顏色
Image2.ImageUrl = newpic1;[JY]//圖片顯示
Removeimg.RemoveFiles(Server.MapPath(\"../Reportpicture/\"));[JY]//刪除服務器端的圖片
程序產(chǎn)生的圖表結(jié)果如圖1所示。
4 結(jié) 語
利用OWC 圖表組件可在Web 服務器端生成柱狀圖、折線圖、餅圖等40 多種圖形,能和數(shù)據(jù)庫查詢結(jié)果集(如ADORecordset 對象) 綁定,實現(xiàn)圖表與數(shù)據(jù)庫的完美結(jié)合。這一特點正好能夠應用在DSS中,完成各種圖表的動態(tài)生成。
通過上述實例,可以看到OWC 組件的強大功能可以快速靈活的使用,在Web 系統(tǒng)中使用這些控件,將增強系統(tǒng)的統(tǒng)計功能,有利于快速集成和開發(fā)。
參 考 文 獻
[1]唐賢倫,張學旺.OWC組件在Web圖表統(tǒng)計中的應用[J].計算機應用,2003,23(12):437-438.
[2][美]DaveStearms.Microsoft Office 2000 Web Components編程技術內(nèi)幕[M].北京:希望電子出版社,2000.[3]王文娟,王傳昌.應用OWC和ASP創(chuàng)建動態(tài)圖表[J].信息技術,2005,29(3):11-13.
[4]趙偉.Web中利用Microsoft office Web components生成復雜圖表[J].電腦編程技巧與維護,2005(6):32-34.
[5]By Rick Strahl.Using the Office Web Components to Create Dynamic Charts[DB/ OL].www.west - wind.com/ presentations/OWC Chart ing/ OWCCharting.asp,2004.
[6]Star Francis.Creating Dynamic Charts in ASP.NET Web Applications Using OWC [ DB/ OL ].http://www.csharphelp.com/ archives2/archive457.html.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。