SQL Server数据表在编程中实现导出EXCEL几种方法
---快速将SQL Server 数据库表(或网格控件)数据导出EXCEL
关键字: SQL Server2000、Select高级查询、MsFlexGrid、MsHFlexGrid、ListView、EXCEL和VB6
前言:
目前,随着电脑技术知识的广泛普及,掌握微软Office办公软件的技术人员(一般办公人员)队伍逐渐加速扩大;促使多数商用软件如:MIS、ERP、MRP等系统在解决数据输出方面,(除数据显示和打印功能外)都多了一项任务,即将数据导出EXCEL文件的功能。这个“转换”技术并不难,主要是将数据库编程技术与Office Excel文件的建立、存储技术有机地结合就会把这个问题解决。以下是我们在设计开发软件中,解决数据导出EXCEL实例,方法及相关的事宜。具体说明如下:
一、采用SQL Server数据库导出EXCEL文件原由和方法
在SQL Server数据库系统中已经提供了非常丰富的实现表导入、导出的方法,而我们又重复此举的必要性何在呢?回答:有必要。只要对用户实际工作有利有益,我们就要做,还要做好,让其到位。
⑴.其原由:用户需要数据的结果集不是大量静态表的数据,而是经过Select高级查询(多条件;排序;筛选,或汇总后)结果集数据,是有保存价值(有再次使用的空间)。
⑵. 三种导出EXCEL的方法:
EXCEL;◊1.Table (采用Select高级查询后的结果集)
2.Table EXCEL;◊控件(显示后)◊(采用Select高级查询后的结果集)
3.Table ◊打印(后,再导出[Crystal Report 9中文版])◊(采用Select高级查询后的结果集) EXCEL;
⑶.熟练掌握以下编程技术;
1.能够熟练地掌握用编程语言,书写数据库:SQL 语句(Select高级查询)的使用方法;
2.正确地使用MsFlexGrid、MsHFlexGrid、ListView控件,装入Select高级查询后的结果集方法。
3.正确设计水晶报表,解决输出Select高级查询后的结果。
⑷.用VB过程调用来解决导出EXCEL的方法。
二、实例:请见图示1(由于篇幅所限,仅举图示1中的两种方法)
※.在模块中必须的”引用”
#. Microsoft Excel 11.0 Object Library
#. Microsoft ActiveX Data Object 2.6 Library
以下两个实例均采用过程调用得以实现。
模块中的定义代码:
Option Explicit
Dim RS2 As New ADODB.Recordset '定义数据集对象
Dim RS4 As New ADODB.Recordset '定义数据集对象
Dim Ssql1, Ssql2, Ssql3 As String 'Select高级查询字符串变量
Dim My_Path As String '定义路径及文件名
Dim DT1, DT2 As Variant '定义日期变量
Dim Q As Integer '定义数据整型变量
具体步骤:
①.进入界面:首先,选择(HireDate)租用日期,自从2001-01-03截至2003-08-27。
②.用鼠标点击【显示数据】按钮;符合条件的数据显示到网格中。
③.【显示数据】按钮下的代码:
Private Sub Command1_Click() '显示数据
DT1 = Format(Trim(D1.Value), "yyyy-mm-dd")
DT2 = Format(Trim(D2.Value), "yyyy-mm-dd")
Ssql1 = "": Ssql2 = "": Ssql3 = "" '1.全部。2.表名。3.条件。
Ssql1 = "Select * From "
Ssql2 = "Employees"
Ssql3 = " where hiredate>='" & DT1 & "' And hiredate<='" & DT2 & "'"
Ssql1 = Ssql1 & Ssql2 & Ssql3
MSFlexGrid1_Click '运行Select高级查询将结果集装入网格控件;其过程…略。
excel连接sql数据库教程Label1.Caption = ""
Label1.ForeColor = QBColor(9)
Label1.Caption = "目前运行表名:" & Ssql1 '显示图示上Select高级查询字符串
Command3.Enabled = True ‘激活命令按钮
Command5.Enabled = True ‘激活命令按钮
End Sub
⑴. 将MsFlexGrid控件所显示的数据导出EXCEL
1.【[MSFlexGrid]导出至Excel】按钮下的过程代码:
Private Sub Command3_Click() 'MSFlexGrid导出EXCEL/
My_Path = App.Path & "\" & Ssql2 & "_G.xls"
PrintTableToExcel1 Me.MSFlexGrid1, "表名:" & Ssql2, "Select_高级查询:" & Ssql1, My_Path, Me.ProgressBar1 '有参数过程调用MsgBox Chr(13) + "数据已经导出到文件:" + Chr(13) + Chr(13) + My_Path + " ", vbInformation
Command3.Enabled = False
If Command5.Enabled = False And Command3.Enabled = False
Then Clea_xy1 '符合条件清空网格
End Sub
2. 生成EXCEL文件的代码
Public Sub PrintTableToExcel1(ByRef myGrid As MSFlexGrid, ByVal strHeader As String, ByVal strInfo As String, ByVal strFileName As String, ByRef proBar As ProgressBar)
'参数:网格、标题、Select_高级查询字符串、导出路径和文件名、进度条控件
On Error Resume Next
Dim ExcelApp As Excel.Application '定义EXCEL变量
Dim R As Long, C As Long '定义行、列变量
Set ExcelApp = GetObject(, "Excel.Application")
If myGrid.Rows <= 1 Then Exit Sub '导入文件执行的条件
If Err.Number <> 0 Then
Err.Clear
Set ExcelApp = CreateObject("Excel.application")
End If
Dim wsBook As Workbook '定义EXCEL的BOOK变量Dim wsSheet As Worksheet '定义EXCEL的SHEET变量With ExcelApp.AutoCorrect.Application
.WindowState = xlMinimized
.SheetsInNewWorkbook = 1
.Visible = False
.Workbooks.Add
Set wsBook = .ActiveWorkbook
Set wsSheet = .ActiveSheet
End With
'---进度
proBar.Min = 0
proBar.Max = myGrid.Rows
proBar.Value = 0
proBar.Visible = True
'---
With wsSheet
.Cells.Font.Name = "System"
.Cells.Font.Size = 12
.Name = "导出的表格"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论