关于OWC的问题,高手请进!
昨天感受到了论坛的温暖和热情,今天又遇到了问题请高手相助!提提意见也是好的。
我用OWC从数据库动态调用数据画曲线图。我用的是vs2003 开发winform 而非asp.net
用的语言是vb.net。
首先在解决方案资源管理器中添加引用了owc,而后在windows窗体工具箱中添加了owc控键(不知道microsoft office chart 11是不是就是用于画图目的的控键),之后拖了一个microsoft office chart 11在from中。 至于代码如下:
Imports Microsoft.Office.Interop.Owc11 '添加office组件引用
Imports System.Data.SqlClient
Imports System.Convert
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'连接数据库
Dim strSeriesName As String = "图例1"
Dim sqlcon As New SqlConnection("database=computer;initial catalog=数据库名;Integrated Security=SSPI")
Dim strsql As String = "select 位移,测时 from 多点位移计原始测值表 "
sqlcon.Open()
Dim sqlada As SqlDataAdapter = New SqlDataAdapter(strsql, sqlcon)
Dim ds As DataSet = New DataSet
sqlada.Fill(ds)
'存放时间
Dim time() As Date
'存放位移
Dim weiyi() As Single
'为数组赋值
Dim i As Integer = 0
For i = 0 To ds.Tables(0).Rows.Count
ReDim Preserve time(i) '动态数组,保存前面的值
ReDim Preserve weiyi(i)
time(i) = Convert.ToDateTime(ds.Tables(0).Rows(i)("测时"))
weiyi(i) = Convert.ToSingle(ds.Tables(0).Rows(i)("位移"))
i += 1
Next
' 为x轴指定特定字符串,以便显示数据
Dim strXdata As String = String.Empty
For i = 0 To time.GetUpperBound(0)
strXdata += (time(i)).ToString + "t"
Next
' 为y轴指定特定字符串,以便与x轴相对应
Dim strYdata As String = String.Empty
For i = 0 To weiyi.GetUpperBound(0)
strYdata += (weiyi(i)).ToString + "t"
Next
'创建ChartSpace对象来放置图表
Dim laySpace As ChartSpace = New ChartSpaceClass
'在ChartSpace对象添加图表
Dim insertchart As ChChart = laySpace.Charts.Add(0)
'指定绘制图表的类型。类型可以通过OWC.ChartChartTypeEnum枚举值得到
'insertchart.Type = ChartChartTypeEnum.chChartTypeArea '面积图
insertchart.Type = ChartChartTypeEnum.chChartTypeLine '折线图
'insertchart.Type = ChartChartTypeEnum.chChartTypeBarClustered '条形图
'insertchart.Type = ChartChartTypeEnum.chChartTypeColumnClustered '柱形图
'指定图表是否需要图例标注
insertchart.HasLegend = False
'为图表添加标题
insertchart.HasTitle = True
insertchart.Title.Caption = "位移时间图" '标题的名字
'为x轴添加图示说明(标题)
insertchart.Axes(0).HasTitle = True
insertchart.Axes(0).Title.Caption = "时间"
'为y轴添加图示说明(标题)
insertchart.Axes(1).HasTitle = True
insertchart.Axes(1).Scaling.SplitMinimum = 200
insertchart.Axes(1).Title.Caption = "位移"
'添加一个series系列
insertchart.SeriesCollection.Add(0)
'给定series系列的名
insertchart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimSeriesNames, +Convert.ToInt64(ChartSpecialDataSourcesEnum.chDataLiteral), strSeriesName)
'给定分类
insertchart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimCategories, +Convert.ToInt64(Convert.ToInt16(ChartSpecialDataSourcesEnum.chDataLiteral)), strXdata)
'给定值
insertchart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimValues, Convert.ToInt64(ChartSpecialDataSourcesEnum.chDataLiteral), strYdata)
之后我想把图形在窗体上显示出来,不知道代码应该如何写,还有就是前面有没有错误,我是新手,请高手们相助,替我检查一下,用的很急,请大家多多关照!不甚感谢!!!在线等,解决了,立马加分。