使用VB将SQL Server数据导出生成Excel表格
2009-07-02杨晓峰张茁
杨晓峰 张 茁
[摘要]使用VB将SQL Server和Excel结合起来处理数据会得到事半功倍的效果。介绍设计一个VB程序将SQL Server中查询到的数据导出生成Excel表格的方法。以解决非专业人员处理数据和阅读数据的问题,也解决SQL Server数据发布需要使用专用的SQL Server管理工具的不便之处。
[关键词]VB SQL Server Excel表格 数据库
中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0520058-01
SQL Server作为微软在Windows系列平台上开发的数据库,一经推出就以其易用性得到了很多用户的青睐。Excel是微软公司出品的Office系列办公软件中的一个组件,确切地说,它是一个电子表格软件,可以用来制作电子表格、完成许多复杂的数据运算,进行数据的分析和预测并且具有强大的制作图表的功能。使用VB将SQL Server和Excel结合起来处理数据会得到事半功倍的效果。下面将介绍如何设计一个VB程序将SQL Server中查询到的数据导出生成Excel表格。
一、利用ADO的数据库访问组件获取SQL Server中的数据
1.在VB工程中新建一个模块LocalInfo,在模块中定义SqlConn的公共函数用以建立与SQL Server数据库的连接SqlCn对象,函数代码如下:
Public Function SqlConn(ByVal Ser As String, Data As String, User As String, Pass As String) As Boolean
On Error Resume Next
Set SqlCn = New ADODB.Connection
SqlCn.CursorLocation = adUseClient
SqlCn.ConnectionString = "Provider=SQLOLEDB;Server=" + Ser + ";Database=" + Data + ";User ID='" + User + "';Password='" + Pass + "';"
SqlCn.Open
If Err Then
Err.Clear
SqlConn = False '数据库连接失败
MsgBox "数据库连接失败!系统不能正常运行!" & Chr(13) & Chr(10) & "请进入“数据库设置”重新设定数据库参数!" & Chr(13) & Chr(10) & "或与系统管理员联系,完成后请重新启动该系统。", vbOKOnly, "系统提示"
Else
SqlConn = True
End If
End Function
其中"Provider=SQLOLEDB;Server=" + Ser + ";Database=" + Data + ";User ID='" + User + "';Password='" + Pass + "';"中的Ser是数据库服务器的名称,Data是数据库的名称,User 和Pass分别用户名和密码,上述参数可以直接赋值也可写入INI配置文件中调用。
2.调用SqlConn函数建立SqlCn对象的数据库连接后,创建SqlRs记录集对象用以执行SQL查询语句来获取用户所需的数据,以查询课表信息为例,代码如下:
Set SqlRs = New ADODB.Recordset'创建ADO记录集对象
Sql = "select * from Curriculums where cyears='" & Y34 & "' and cterm='" & T34 & "' and ctname='" & Trim(Rs1!ctname) & "' and csd='单'"
SqlRs.Open Sql, SqlCn'执行查询语句
查询后的的结果可利用对SqlRs记录集对象的游标操作来完成相关工作。
二、创建Excel编辑对象
1.Excel编辑对象不是Visual Basic 6.0的标准组件,因此需要在工程添加组件,可以通过菜单“工程/引用”项(如图一),打开“引用”窗口(如图二),选择Excel编辑组件“Microsoft Excel 11.0 Object Library”即可。
2.定义和设置,可以通过VB程序完成对Excel表格表头设计、字体设置、单元格设置等常用操作,首先定义Excel编辑对象中的3个对象表格(Excel.Application)、工作簿(Excel.Workbook)和单元格(Excel.
Worksheet),代码如下:
Dim xlExcel As New Excel.Application
Dim xlBook As New Excel.Workbook
Dim xlSheet As New Excel.Worksheet
定义好这三个对象,再完成Excel表格表头的设置,代码如下:
Set xlBook = xlExcel.Workbooks.Add
Set xlSheet = xlExcel.Worksheets.Add
‘设定表格中第2行1到8列8个单元格中的内容
xlSheet.Cells(2, 2) = "星期一"
xlSheet.Cells(2, 3) = "星期二"
xlSheet.Cells(2, 4) = "星期三"
xlSheet.Cells(2, 5) = "星期四"
xlSheet.Cells(2, 6) = "星期五"
xlSheet.Cells(2, 7) = "星期六"
xlSheet.Cells(2, 8) = "星期日"
‘设定表格中第1列3到9行7个单元个中的内容
xlSheet.Cells(3, 1) = "早操"
xlSheet.Cells(4, 1) = "早自习"
xlSheet.Cells(5, 1) = "1-2节"
xlSheet.Cells(6, 1) = "3-4节"
xlSheet.Cells(7, 1) = "5-6节"
xlSheet.Cells(8, 1) = "7-8节"
xlSheet.Cells(9, 1) = "9-10节"
‘设定表格中第1行第1列中的内容,该项为表格的标题
xlSheet.Cells(1, 1)=Me.CombN1.Text & Me.CombQ1.Text & "_" & Trim(Rs1!ccname) & "班课表(单周)"
'设置标题为黑体,18号
xlSheet.Range(Cells(1, 1), Cells(1, 8)).Characters.Font.Name = "黑体"
xlSheet.Range(Cells(1, 1), Cells(1, 8)).Characters.Font.Size = 18
xlSheet.Range(Cells(1, 1), Cells(1, 8)).Characters.Font.FontStyle = "加粗"
‘合并表格中的第一行中的1到8列
xlSheet.Range(Cells(1, 1), Cells(1, 8)).Merge
‘设置所有单元格中内容为水平居中对齐
xlSheet.Range(Cells(1, 1), Cells(65536, 256)).HorizontalAlignment = 3
'设置所有单元格内容为垂直居中对齐
xlSheet.Range(Cells(1, 1), Cells(65536, 256)).VerticalAlignment = 2
‘设置从第2行起所有单元格的字体
xlSheet.Range(Cells(2, 1), Cells(65536, 256)).Characters.Font.Name = "宋体"
‘设置从第2行起所有单元格的字体大小
xlSheet.Range(Cells(2, 1), Cells(65536, 256)).Characters.Font.Size = 10
在上述程序中标题应在添加了内容后完成合并操作,表格的行与列的索引值是从1开始,行的最大值是65536,列的最大值是256。
3.将查询到的数据到的数据添加到Excel表格中,这是一个较为容易的步骤,方法很多,这里是将查询到的结果SqlRs记录集先放置在表格控件LstXX中,然后再将数据循环的方式取出导入到Excel表格中,此种方法可以提高数据的利用率,减少前台系统与后台数据库的交换次数。代码如下:
For a = 1 To 7
LstXX.Row = a
For b = 1 To 7
LstXX3.Col = b
xlSheet.Cells(a + 2, b + 1) = Trim(LstXX.Text)
Next
Next
4.保存已经导入数据的Excel表格,可根据用户设定Excel文件名。
xlBook.SaveAs "C:XXX班课表(单周).xls"
注意上述步骤后应及时清除对象释放内存空间。
xlExcel.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
通过上述方法可以将SQL Server中的数据导出生成Excel表格,这样可以解决非专业人员处理数据和阅读数据的问题,也解决了SQL Server数据发布需要使用专用的SQL Server管理工具的不便之处。
参考文献:
[1]启明工作室编著,《ASP.NET+SQL Server网络应用系统开发与实例》,人民邮电出版社,2005.9.
[2]柳青编著,《VB程序设计--面向21世纪高职高专计算机专业教材》,人民交通出版社,2004.2.
[3]李岩、张瑞雪主编,《SQL Server2005实用教程》,清华大学出版社,2008.9.
作者简介:
杨晓峰(1976-),男,汉族,江西南昌人,助讲,研究方向:职业教育;张茁(1981-),女,汉族,吉林辉南人,助讲,研究方向:职业教育。