【VB】利用OWC11繪製長條圖
1.首先要引入
Imports OWC11
Imports MSComctlLib
2.接著 放一個 PictureBox 在頁面上
3.傳入DataTable格式
本範例--統計1~12月消費總計
欄位有月份及總計
dt:
| 月份 | 總計 |
| 1 | 77 |
| 2 | 153 |
| 3 | 100 |
| 4 | 95 |
以下省略
4.呼叫
GetGDPChartLong(dt, "支出", "金額")
表格內容--> dt
圖標題 --> "支出"
Y軸標題 --> "金額"
長條圖---副程式:
#Region "長條圖"
Sub GetGDPChartLong(ByVal TempDt As Data.DataTable, ByVal DepName As String, ByVal angeName As String)
Dim strXdata As String = [String].Empty
Dim strYdata As String = [String].Empty
'Dim strZdata As String = [String].Empty
'Dim strWdata As String = [String].Empty
'X軸月份
For i As Integer = 0 To TempDt.Rows.Count - 1
If i = TempDt.Rows.Count - 1 Then
strXdata &= TempDt.Rows(i).Item("月份")
Else
strXdata &= TempDt.Rows(i).Item("月份") & Chr(9)
End If
Next
'為x軸項目名稱
Dim laySpace As ChartSpace = New ChartSpaceClass()
'創建ChartSpace物件來放置圖表
Dim AddChart As ChChart = laySpace.Charts.Add(0)
'在ChartSpace物件中添加圖表
Dim c As Object = laySpace.Constants
AddChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered
'指定繪製圖表的類型。"直方圖"
AddChart.HasLegend = True
'指定圖表是否需要圖例標注
AddChart.HasTitle = True
'指定圖表是否顯示標題
AddChart.Title.Caption = DepName
'為圖表添加標題
AddChart.Title.Font.Size = 10
AddChart.Legend.Font.Size = 9
AddChart.Legend.Position = ChartLegendPositionEnum.chLegendPositionTop
AddChart.Legend.Border.Color = "black"
AddChart.BarWidth = 200
AddChart.GapDepth = 500 'Y1與Y2柱狀間之寬度
AddChart.GapWidth = 400 'YX1與YX2柱狀間之寬度
AddChart.Border.DashStyle = ChartLineDashStyleEnum.chLineSolid
AddChart.Rotation = 0 '; //Y角度向度
AddChart.Inclination = 0 '; //X角度向度
AddChart.Border.Color = "White"
AddChart.PlotArea.Interior.Color = "Gainsboro"
AddChart.PlotArea.Floor.Border.Color = "green"
AddChart.GapWidth = 70
'' X軸設定
AddChart.Axes(0).HasTitle = True
AddChart.Axes(0).Title.Caption = "月份"
'為x軸添加圖示說明
AddChart.Axes(0).Title.Font.Size = 11
AddChart.Axes(0).MajorTickMarks = ChartTickMarkEnum.chTickMarkInside
'' Y軸設定
AddChart.Axes(1).HasTitle = True
'為y軸添加圖示說明
AddChart.Axes(1).Title.Font.Size = 10
AddChart.Axes(1).Title.Caption = angeName
AddChart.Axes(1).HasTitle = True
AddChart.Axes(1).HasMajorGridlines = True
AddChart.Axes(1).MajorGridlines.Line.Color = "White"
AddChart.Axes(1).MajorUnit = 100
AddChart.Axes(1).HasAutoMajorUnit = True
'AddChart.Axes[1].Scaling.Maximum = 900
AddChart.Axes(1).MajorTickMarks = ChartTickMarkEnum.chTickMarkInside
For i As Integer = 0 To TempDt.Columns.Count - 2
strYdata = ""
For j As Integer = 0 To TempDt.Rows.Count - 1
If j = TempDt.Rows.Count - 1 Then
strYdata &= Double.Parse(Replace(TempDt.Rows(j).Item(i + 1), ",", ""))
Else
strYdata &= Double.Parse(Replace(TempDt.Rows(j).Item(i + 1), ",", "")) & Chr(9)
End If
Next
''統計值圖形設定
AddChart.SeriesCollection.Add(i)
'添加一個series系列
'AddChart.SeriesCollection(i).Type = ChartChartTypeEnum.chChartTypeLine
AddChart.SeriesCollection(i).SetData(ChartDimensionsEnum.chDimSeriesNames, +CInt((ChartSpecialDataSourcesEnum.chDataLiteral)), TempDt.Columns(i + 1).ColumnName)
'給定series系列的名字
AddChart.SeriesCollection(i).SetData(ChartDimensionsEnum.chDimCategories, +CInt((ChartSpecialDataSourcesEnum.chDataLiteral)), strXdata)
'給定分類
AddChart.SeriesCollection(i).SetData(ChartDimensionsEnum.chDimValues, CInt((OWC11.ChartSpecialDataSourcesEnum.chDataLiteral)), strYdata)
'給定值
'AddChart.SeriesCollection(i).Interior.Color = '"LightSeaGreen"
AddChart.SeriesCollection(i).DataLabelsCollection.Add()
Next
Dim strAbsolutePath As String = Application.StartupPath & "\ShowReportData.gif"
'輸出檔.
laySpace.ExportPicture(strAbsolutePath, "GIF", 1024, 600)
Dim strRelativePath As String = "./ShowReportData.gif"
'創建GIF檔的相對路徑.
Dim strImageTag As String = "<IMG SRC='" + strRelativePath + "'/>"
'把圖片添加到placeholder中,並在頁面上顯示
laySpace.ExportPicture(Application.StartupPath + "/ShowReportData.jpg", "jpg", 323, 230)
Me.PictureBox1.ImageLocation = Application.StartupPath + "/ShowReportData.jpg"
End Sub
#End Region
執行畫面:
延伸:(Microsoft Chart Controls圖表新利器)
http://demo.tc/Post/386
這個本人比較推薦
PS: 以上ASP.NET及VB.NET都適用

留言
張貼留言