APP下载

使用VB将SQL Server数据导出生成Excel表格

2009-07-02杨晓峰

新媒体研究 2009年10期
关键词:数据库

杨晓峰 张 茁

[摘要]使用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-),女,汉族,吉林辉南人,助讲,研究方向:职业教育。

猜你喜欢

数据库
数据库
数据库
数据库
数据库