在使用ASP.net進行Web開發(fā)中,經(jīng)常需要將各種統(tǒng)計數(shù)據(jù)以圖形的方式顯示出來。如果僅僅是柱狀圖,可以采用畫表格或者將某種特定顏色的GIF圖像縮放寬度和高度的方法來表示,許多投票程序多采用這種方法。但如果要求輸出結(jié)果是餅狀圖或者是連續(xù)的波形圖,就有些困難了。本文特向大家介紹使用OWC圖形組件輕松實現(xiàn)繪制統(tǒng)計圖表的方法。
OWC(Microsoft Office Web Components)是 Microsoft Office 使用的數(shù)據(jù)綁定 ActiveX 控件,用于向 Web 頁添加圖表功能。OWC支持Microsoft Excel 2000中大部分的二維圖表(如折線圖、柱形圖、股價圖等)和極坐標圖表(如餅圖和雷達圖),并支持組合圖表,如兩軸線-柱圖,數(shù)據(jù)表會隨同圖表發(fā)布,圖表隨著數(shù)據(jù)的變化而改變。OWC能將處理結(jié)果做為標準GIF輸出并下載到瀏覽器中顯示。
首先,使用ADODB.Recordset讀出數(shù)據(jù)集合,并與OWC組件進行數(shù)據(jù)綁定:
Dim owcChartSpace As OWC.ChartSpace = New OWC.ChartSpace() Dim owcChart As OWC.WCChart = owcChartSpace.Charts.Add Dim ConnADO As New ADODB.Connection() Dim RecordsetADO As New ADODB.Recordset() Dim connectionString As String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath("Grades.mdb") ConnADO.Open(connectionString)
RecordsetADO.ActiveConnection = ConnADO RecordsetADO.CursorType = ADODB.CursorTypeEnum.adOpenStatic RecordsetADO.CursorLocation = ADODB.CursorLocationEnum.adUseClient Dim strSQL As String strSQL = "Select city, month, temperature From test order by city,ids" RecordsetADO.Open(strSQL, ConnADO) owcChartSpace.DataSource = RecordsetADO
然后,指定OWC的顯示類型:
owcChart.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLineMarkers
在運行時向OWC中輸入數(shù)據(jù)有多種方法。所有這些方法都要用到 SetData 方法來真正將數(shù)據(jù)寫入 Chart 組件,因此將詳細介紹此方法。SetData 方法應用于 WCChart、WCErrorBars 和 WCSeries 對象并能向這三種對象輸入數(shù)據(jù)。
SetData 方法有三個參數(shù):Dimension、DataSourceIndex 和 DataReference。Dimension 參數(shù)引用圖表中被填充數(shù)據(jù)的一部分。可用的維度常數(shù)為 SeriesNames、Categories、Values、YValues、XValues、OpenValues、CloseValues、HighValues、LowValues、BubbleValues、RValues 和 ThetaValues。這些常數(shù)每一種都引用了圖表的一部分;例如,SeriesNames 常數(shù)引用了每個序列名,OpenValues 和 CloseValues 常數(shù)引用股票圖的開盤價和收盤價等等。每個常數(shù)都是作為諸如 chDimSeriesNames、chDimCategories、chDimValues等窗體中的枚舉常數(shù)而傳遞給該方法的。
這里,我們使用SetData 方法給OWC賦值:
owcChart.SetData(OWC.ChartDimensionsEnum.chDimSeriesNames, 0, "city") Dim owcSeries As OWC.WCSeries For Each owcSeries In owcChart.SeriesCollection owcSeries.SetData(OWC.ChartDimensionsEnum.chDimCategories, 0, "month") owcSeries.SetData(OWC.ChartDimensionsEnum.chDimValues, 0, "temperature") Next
最后,將OWC處理結(jié)果轉(zhuǎn)換成Gif圖象輸出到瀏覽器中顯示:
Randomize() Dim nfilenameSuffix As Integer Dim sfilenamesuffix As String nfilenameSuffix = 100000 * Rnd() sfilenamesuffix = System.Convert.ToString(nfilenameSuffix) owcChartSpace.ExportPicture(MapPath("owc/price_") + sfilenamesuffix + ".gif", "gif", 800, 600) Image1.ImageUrl = "owc/price_" + sfilenamesuffix + ".gif"
如果變換OWC的顯示類型,即修改一下owcChart.Type,使之變成:
owcChart.Type = OWC.ChartChartTypeEnum.chChartTypeColumnClustered 在ASP.net中使用OWC可以幫助我們快速構(gòu)造統(tǒng)計圖表,而且由于OWC生成的結(jié)果是Gif圖象,可以兼容客戶端所有版本的瀏覽器,適用范圍很廣。本程序在Windows 2000 server、IIS5.0和IE6.0環(huán)境下運
|