OWC(Microsoft Office Web Components)是Microsoft Office使用的數據綁定ActiveX控件,用於向Web頁添加圖表功能。OWC支持Microsoft Excel 2000中大部分的二維圖表(如折線圖、柱形圖、股價圖等)和極坐標圖表(如餅圖和雷達圖),並支持組合圖表,如兩軸線-柱圖,數據表會隨同圖表發布,圖表隨著數據的變化而改變。OWC能將處理結果做為標准GIF輸出並下載到浏覽器中顯示。
首先,使用ADODB.Recordset讀出數據集合,並與OWC組件進行數據綁定:
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中輸入數據有多種方法。所有這些方法都要用到SetData方法來真正將數據寫入Chart組件,因此將詳細介紹此方法。SetData 方法應用於WCChart、WCErrorBars和 WCSeries對象並能向這三種對象輸入數據。
SetData 方法有三個參數:Dimension、DataSourceIndex和 DataReference。Dimension 參數引用圖表中被填充數據的一部分。可用的維度常數為SeriesNames、Categories、Values、YValues、XValues、OpenValues、CloseValues、HighValues、LowValues、BubbleValues、RValues 和 ThetaValues。這些常數每一種都引用了圖表的一部分;例如,SeriesNames常數引用了每個序列名,OpenValues和 CloseValues常數引用股票圖的開盤價和收盤價等等。每個常數都是作為諸如chDimSeriesNames、chDimCategories、chDimValues等窗體中的枚舉常數而傳遞給該方法的。
這裡,我們使用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處理結果轉換成Gif圖象輸出到浏覽器中顯示:
Randomize()
Dim nfilenameSuffix As Integer
Dim sfilenamesuffix As String
nfilenameSuffix = 100000 * Rnd()
sfilenamesuffix = System.Convert.ToString(nfilenameSuffix)
owcChartSpace.ExportPicture(MapPath("owc/price_")