用DLL实现把数据库的记录导出到EXCEL中(VB)

翻译|其它|编辑:郝浩|2004-08-09 09:35:00.000|阅读 1885 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>



'新建一个ActiveX DLL工程工程名为DbToExcel 
'工程-->引用,引用Microsoft ActiveX Data Objects 2.6 Library 
'Microsoft Excel 9.0 Objects Library 

Option Explicit 

Private Mcnnquery As ADODB.Connection '定义ADO连接对象 
Private Mrsquery As ADODB.Recordset '定义ADO记录对象 
Dim ObjExcel As Excel.Application '定义Excel对象 
Dim ObjWorkBook As Excel.Workbook '定义工作薄 
Dim ObjSheet As Excel.Worksheet '定义工作表 
Dim ObjRange As Excel.Range '定义用户使用工作表的范围 

Private Property Set Connquery(ByVal Conn As ADODB.Connection) 
Set Mcnnquery = Conn 
End Property 

Private Property Get Connquery() As ADODB.Connection 
Set Connquery = Mcnnquery 
End Property 

Private Property Set Rsquery(ByVal Rs As ADODB.Recordset) 
Set Mrsquery = Rs 
End Property 

Private Property Get Rsquery() As ADODB.Recordset 
Set Rsquery = Mrsquery 
End Property 

'属性方法共有三个参数 
'strcnn 连接对象 
'strrs 数据集对象 
'strpath EXCEL文件 
Public Sub DbtoExcel(Strcnn As ADODB.Connection, Strrs As ADODB.Recordset, Strpath As String) 
Dim i As Integer, j As Integer 
On Error GoTo Err 
Set Connquery = Strcnn '设置cnnquery属性 
Set Rsquery = Strrs '设置rsquery属性 
Set ObjExcel = New Excel.Application 
Set ObjWorkBook = ObjExcel.Workbooks.Open(Strpath) '打开EXCEL文件 
Set ObjSheet = ObjWorkBook.ActiveSheet 
Set ObjRange = ObjSheet.UsedRange '用户使用过的工作表范围 
For i = 1 To Rsquery.Fields.Count 
ObjRange.Cells(1, i) = Rsquery.Fields(i - 1).Name 
Next i 
For j = 1 To Rsquery.RecordCount 
For i = 0 To Rsquery.Fields.Count - 1 
ObjRange.Cells(j + 1, i + 1) = Rsquery.Fields(i).Value 
Next i 
Rsquery.MoveNext 
Next j 
ObjExcel.Quit 
Set ObjWorkBook = Nothing 
Set ObjRange = Nothing 
Set ObjSheet = Nothing 
Set ObjExcel = Nothing 
Err: 
MsgBox Err.Number & " " & Err.Description 
Set ObjWorkBook = Nothing 
Set ObjRange = Nothing 
Set ObjSheet = Nothing 
Set ObjExcel = Nothing 
End Sub 


'文件-->生成DbToExcel.dll 
'新建一个标准EXE工程 
'工程-->引用Microsoft ActiveX Data Objects 2.6 Library 
浏览,加载刚才生成的DLL文件 

Option Explicit 

Dim Conn As ADODB.Connection 
Dim Rs As ADODB.Recordset 

Dim DE As New DbtoExcel.Class1 '定义一个类,DbToExcel.DLL内Class1类的一个实例 

Private Sub Command1_Click() 
DE.DbtoExcel Conn, Rs, "c1.xls" 
End Sub 

Private Sub Form_Load() 
Set Conn = New ADODB.Connection 
Set Rs = New ADODB.Recordset 
Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:db.mdb;Persist Security Info=False" 
Conn.Open 
Rs.Open "select * from users", Conn, adOpenKeyset, adLockBatchOptimistic 
End Sub


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP