2024年4月4日发(作者:)
在Visual Basic中使用MSChart控件绘制Excel图表
*
依皮提哈尔·穆罕买提
1
,那斯尔江·吐尔逊
1
,热依曼·吐尔逊
2
(1. 新疆大学 数学与系统科学学院,新疆,乌鲁木齐,830046;
2. 新疆大学 信息工程学院,新疆,乌鲁木齐,830046)
摘 要:本文首先介绍如何使用Visual Basic中的MSChart控件,然后通过实例深入
探讨利用MSChart控件绘制Excel数据源图表的方法。
关键词:Visual Basic;MSChart控件;Microsoft Excel数据表;图表
中图分类号: 文献标识码:A
Using MSChart Control Drawing Excel Chart in Visual Basic
at
1
,
1
,
(atics and System Science Institute of Xinjiang University, Urumqi, Xinjiang, 830046)
(2. Information Engineering Institute of Xinjiang University, Urumqi, Xinjiang, 830046)
Abstract :This article discusses how to use the MSChart control and how that is used in
the VB project to drawing Microsoft
®
Excel charts.
Key words: MSChart Control; Chartdata ;Mirosoft Excel Sheets;Chart;Database
1. 引言
Visual Basic中的MSChart控件是一个功能强大的高级图表工具,拥有丰富的图表绘制功
能,用它来可以显示二维和三维的棒图、区域图、线形图、饼图等多种常用图表。使用
MSChart 控件可以按照一定的规范将数据以图表的形式绘制出来。可以通过在控件的属性
页中设置数据来创建图表,或者也可以从其它数据源,如 Microsoft Excel和Microsof
Access 的电子数据表中检索出要绘制的数据。本文介绍MSChart控件使用方法的同时,主
要讨论用MSChart控件绘制Excel数据源图表的实现过程。
2. MSChart控件的使用方法
2.1 添加MSChart控件并调整其属性
(1)先通过“工程”菜单中的“部件”命令,在控件箱里,添加Microsoft Chart
Control6.0(OLEDB)(简称MSChart)
(2) MSChart控件拖动到窗体里,生成初始图表
(3) 快捷菜单中的属性命令打开属性页对话框,在该对话狂里可以选择图表类型
(在代码中使用ChartType属性),也可以设置图表及其X、Y轴的标题,框
架等各种属性
2.2 使用数组和 ChartData 属性绘制图表
绘制图表最简单的方法就是创建数字型的数组,然后将 ChartData 属性设为该数组下
面介绍两种,即简单的单系列图表和复杂的多系列图表的创建方法:
①创建单系列图表
-------------------------------------------------------------------------------
*新疆大学校基金”应用软件程序设计”重点课程建设项目资助
依皮提哈尔·穆罕买提,男,维吾尔族,讲师
1
图表中的一个“系列”就是一个相关的数据点集,对于excel数据表来说,单系列相当于
一个单列数据集。下面的代码将产生简单的单系列图表,这段代码可以粘贴到一个Form
的 Load 事件中,该Form包含名为“MSChart1”的MSChart 控件。
Dim arrPrices(1 to 10)
Dim i As Integer
For i = 1 to 10
arrPrices(i)= i * 2
Next i
ata = arrPrices
例如,典型的系列可以是一年中商品的价格。下面的图表(如图1)显示了一个单系列图
表。
图1 图2
②创建复杂的多系列图表
要创建更复杂的多系列图表,必须创建多维数组。创建多维数组时,可以将第一个系
列赋值为字符串;当数组赋值给 ChartData 属性时,字符串将会成为行的标签。其中系列
的数目是由第二个维数决定的。 在本例中,图表将有两个系列,每个系列有五个数据点。
如下例所示:
Dim arrValues(1 to 5, 1 to 3)
Dim i as Integer
For i = 1 to 5
arrValues(i, 1) = "Label " & i ' Labels
arrValues(i, 2) = 0 + i ' Series 1 values.
arrValues(i, 3) = 2 * i ' Series 2 values.
Next i
ata = arrValues
上面的代码产生的图表如图2:
正如所看见的那样,使用 ChartData 属性创建图表的方法快捷而且简便。但是,使用
数组的问题是要将数据取到数组中。这类数据的大多数用户可能更想使用某种电子表格程
序,例如 Microsoft Excel,或某种数据库程序,如 Microsoft Access,来存贮和检索数
-------------------------------------------------------------------------------
*新疆大学校基金”应用软件程序设计”重点课程建设项目资助
依皮提哈尔·穆罕买提,男,维吾尔族,讲师
2
据。
3.用MSChart绘制EXCEL图表
3.1打开Excel数据源
① 先通过“工程”菜单中的“部件”命令,在控件箱里,添加Microsoft Chart
Control6.0(OLEDB)(即MSChart控件),并在窗体上添加MSChart控件
② 用“工程”菜单中的“引用”命令,将程序连接到“Mirosoft Excel 9.0 Object
Library”(Excel对象库)
③用以下代码来,打开名称为的Excel数据库,这些代码可以添加到纯代码模块
(Module模块)或窗体模块的form_Load()事件过程之中。
Option Explicit
' 特别注意: 如果您使用的是 Windows NT 4.0, 请确认您已经安装了 Service Pack 3。
On Error Resume Next
Set xlapp = GetObject(, "ation") '打开正在运行的 Excel副本
If <> 0 Then „如打开失误
Set xlapp = CreateObject("ation") '创建一个excel副本
ExcelWasNotRunning = True
End If
„打开当前目录下的Excel工作簿
Set xlbook = ( & "")
'以A1作为当前区域的开头,读取该区域的地址
Set xlrng = eets(1).Range("A1").CurrentRegion
3.2 获取Excel数据
用户可以用一个Click(单击某一个命令按钮或窗体)事件过程来实现对Excel数据的
获取。这个过程仅仅是组织数组,然后在指定的范围内,通过数组的方式获取数据.
这个过程的变量类型,必须符合EXCEL表中的字段类型(即每列的数据类型).
假设我们调用的Excel数据源是以下数据表:
①
则可以通过定义一个数组thisarray来读取以上数据:
Private sub Start_click() ‘“开始”命令按钮的单击事件
Dim thisarray(1 To 3, 1 To 4)
Dim i As Integer
Dim course1, course2, course3 As Single
-------------------------------------------------------------------------------
*新疆大学校基金”应用软件程序设计”重点课程建设项目资助
依皮提哈尔·穆罕买提,男,维吾尔族,讲师
3
intRows = 3
For i = 1 To intRows
'获得行标题(三个学生的名称)
thisarray(i, 1) = CStr(("A" & i + 1).Value)
‘获得其它三列数值字段
thisarray(i, 1) = CStr(("A" & i + 1).Value)
course1 = ("B" & i + 1).Value ‘读取课程1的成绩
course2 = ("C" & i + 1).Value ‘读取课程2的成绩
course3 = ("D" & i + 1).Value ‘读取课程3的成绩
‘将平均值的平均值赋给数组
thisarray(i, 2) = Average(course1, course2, course3)
ata = thisarray
End sub
其中,MSChart1是该程序中图表控件的名称,当I=1到3时,thisarray(I,1)所代表的
元素值负责显示图表中的行标题,即学生姓名,其它数组元素值代表要显示的学生成绩。
3.3 创建图表
MSChart控件的ChartData属性负责创建图表。以上过程中的最后一行语句,就是
ChartData属性的一种典型的用法,即如下:
ata = thisarray
它根据数组thisarray的内容,创建一个反映学生平均成绩的图表(如图3)
图3
3.4 关闭工作表结束程序
当您启动时,如果 Microsoft Excel 副本没有被运行,使用应用程序属性的 Quit 方
法将它关闭。注意当您试图退出 Microsoft Excel 时,标题栏闪烁并且显示一个询问您是否
希望保存所有加载的文件的信息。 在应用程序终结前激活此过程,清除所有全局变量。它
由以下代码实现:
Public Sub End_up()
'关闭工作表
-------------------------------------------------------------------------------
*新疆大学校基金”应用软件程序设计”重点课程建设项目资助
依皮提哈尔·穆罕买提,男,维吾尔族,讲师
4
②
Set xlsht = Nothing
Set xlrng = Nothing
If ExcelWasNotRunning = True Then
End If
Set xlapp = Nothing
End Sub
4.结论
以上介绍了MSChart控件,它的功能和使用方法,并在此基础上着重的讨论了利用
Mschart来实现绘制Excel图表的方法,又相应的给出了VB代码,该程序稍作修改以后,以
Access等其他类型数据库为数据对象的图表,也不难推出。读者可以用这些代码来组成一
个实用程序,并且通过进一步地研究,可以将它使用到有关数据分析和预测未来的其它一
些领域。
参考文献:
1. 《VisualBasic使用教程》,郑阿奇主编,电子工业出版社
2.《VB问答式教程》,庞一鸣编著,清华大学出版社
-------------------------------------------------------------------------------
*新疆大学校基金”应用软件程序设计”重点课程建设项目资助
依皮提哈尔·穆罕买提,男,维吾尔族,讲师
5
发布评论