Set ExcelApp = Nothing If Combo1.ListIndex = -1 Then MsgBox "您没有选择纸张!", vbOKCancel: Exit Sub CrystalReport1.Connect = wjy(MDB文件名) CrystalReport1.DataFiles(0) = wjy If Combo1.ListIndex = 2 Then Set ExcelApp = CreateObject("excel.application") ExcelApp.Workbooks.Add adoPrimaryRS.MoveFirst For k = 1 To 5 ExcelApp.Range(ADOEXCE(k) & 1).Value = adoPrimaryRS.Fields(k - 1).NAME Next i = 2 While Not adoPrimaryRS.EOF For k = 1 To 5 ExcelApp.Range(ADOEXCE(k) & i).Value = adoPrimaryRS.Fields(k - 1) Next i = i + 1 adoPrimaryRS.MoveNext Wend ExcelApp.Visible = True ENDIF 在Module1必加以下内容: Public ADOEXCE(100) As String Public Sub ADOEXCEL() For k = 65 To 90 ADOEXCE(k - 64) = Chr(k) Next For k = 91 To 136 ADOEXCE(k - 64) = "A" + Chr(k - 26) Next End Sub
SQL SERVER 与ACCESS、EXCEL的数据转换 SQL SERVER 与ACCESS、EXCEL的数据转换 熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下: 一、 SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: 1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation 2Services(数据转换服务),然后选择 czdImport Data(导入数据)。 3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。 4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。 5在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。 6在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。下一步,完成。 Transact-SQL语句进行导入导出:1. 在SQL SERVER里查询access数据:-- ======================================================SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名------------------------------------------------------------------------------------------------- 2. 将access导入SQL server -- ======================================================在SQL SERVER 里运行:SELECT *INTO newtableFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名------------------------------------------------------------------------------------------------- 3. 将SQL SERVER表里的数据插入到Access表中-- ======================================================在SQL SERVER 里运行:insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名 (列名1,列名2)select 列名1,列名2 from sql表 实例:insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'C:\db.mdb';'admin';'', Test) select id,name from Test INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)SELECT *FROM sqltablename------------------------------------------------------------------------------------------------- 二、 SQL SERVER 和EXCEL的数据导入导出 1、在SQL SERVER里查询Excel数据:-- ======================================================SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。SELECT * FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions ------------------------------------------------------------------------------------------------- 2、将Excel的数据导入SQL server :-- ======================================================SELECT * into newtableFROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 实例:SELECT * into newtableFROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions------------------------------------------------------------------------------------------------- 3、将SQL SERVER中查询到的数据导成一个Excel文件-- ======================================================T-SQL代码:EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'参数:S 是SQL服务器名;U是用户;P是密码说明:还可以导出文本文件等多种格式 实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"' EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword' 在VB6中应用ADO导出EXCEL文件代码: Dim cn As New ADODB.Connectioncn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"------------------------------------------------------------------------------------------------- 4、在SQL SERVER里往Excel插入数据:-- ======================================================insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3) T-SQL代码:INSERT INTO OPENDATASOURCE('Microsoft.JET.OLEDB.4.0', 'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$] (bestand, produkt) VALUES (20, 'Test') -------------------------------------------------------------------------------------------------总结:利用以上语句,我们可以方便地将SQL SERVER、ACCESS和EXCEL电子表格软件中的数据进行转换,为我们提供了极大方便! 参考:http://www.itrain.de/knowhow/sql/transfer/adhoc/
没那么麻烦,我就编了一个dll,很管用. Public Sub AccesstoExcel(AccessPath As String, AccessTablename As String, ExcelPath As String, ExcelSheetName As String) Dim RsAccesstoExcel As New ADODB.Recordset Dim CnAccesstoExcel As New ADODB.Connection Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Set xlApp = CreateObject("Excel.Application") '´´½¨EXCEL¶ÔÏó Set xlBook = xlApp.Workbooks.AddxlApp.Worksheets(ExcelSheetName).Activate Dim i As Integer Dim mm As Integer Dim nn As Integer Dim jj As IntegerCnAccesstoExcel.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessPath & ";Persist Security Info=False" CnAccesstoExcel.CursorLocation = adUseClient CnAccesstoExcel.Open RsAccesstoExcel.Open "select * from " & AccessTablename, CnAccesstoExcel, adOpenDynamic, adLockOptimisticFor i = 1 To RsAccesstoExcel.Fields.Count xlApp.Cells(1, i).Value = RsAccesstoExcel.Fields.Item(i - 1).Name Next mm = 1 RsAccesstoExcel.MoveFirst Do While RsAccesstoExcel.EOF <> True mm = mm + 1 For nn = 1 To RsAccesstoExcel.Fields.Count If RsAccesstoExcel.Fields.Item(nn - 1).Value <> "" Then xlApp.Cells(mm, nn).Value = RsAccesstoExcel.Fields.Item(nn - 1).Value Else xlApp.Cells(mm, nn).Value = " " End If Next RsAccesstoExcel.MoveNext Loop xlApp.DisplayAlerts = False xlBook.SaveAs (ExcelPath) xlBook.Close (False) Set xlApp = Nothing If CnAccesstoExcel.State <> adStateClosed Then CnAccesstoExcel.Close End Sub
If Combo1.ListIndex = -1 Then MsgBox "您没有选择纸张!", vbOKCancel: Exit Sub
CrystalReport1.Connect = wjy(MDB文件名)
CrystalReport1.DataFiles(0) = wjy
If Combo1.ListIndex = 2 Then
Set ExcelApp = CreateObject("excel.application")
ExcelApp.Workbooks.Add
adoPrimaryRS.MoveFirst
For k = 1 To 5
ExcelApp.Range(ADOEXCE(k) & 1).Value = adoPrimaryRS.Fields(k - 1).NAME
Next
i = 2
While Not adoPrimaryRS.EOF
For k = 1 To 5
ExcelApp.Range(ADOEXCE(k) & i).Value = adoPrimaryRS.Fields(k - 1)
Next
i = i + 1
adoPrimaryRS.MoveNext
Wend
ExcelApp.Visible = True
ENDIF
在Module1必加以下内容:
Public ADOEXCE(100) As String
Public Sub ADOEXCEL()
For k = 65 To 90
ADOEXCE(k - 64) = Chr(k)
Next
For k = 91 To 136
ADOEXCE(k - 64) = "A" + Chr(k - 26)
Next
End Sub
SQL SERVER 与ACCESS、EXCEL的数据转换 熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下: 一、 SQL SERVER 和ACCESS的数据导入导出常规的数据导入导出:使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤: 1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation 2Services(数据转换服务),然后选择 czdImport Data(导入数据)。 3在Choose a Data Source(选择数据源)对话框中选择Microsoft Access as the Source,然后键入你的.mdb数据库(.mdb文件扩展名)的文件名或通过浏览寻找该文件。 4在Choose a Destination(选择目标)对话框中,选择Microsoft OLE DB Prov ider for SQL Server,选择数据库服务器,然后单击必要的验证方式。 5在Specify Table Copy(指定表格复制)或Query(查询)对话框中,单击Copy tables(复制表格)。 6在Select Source Tables(选择源表格)对话框中,单击Select All(全部选定)。下一步,完成。 Transact-SQL语句进行导入导出:1. 在SQL SERVER里查询access数据:-- ======================================================SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名------------------------------------------------------------------------------------------------- 2. 将access导入SQL server -- ======================================================在SQL SERVER 里运行:SELECT *INTO newtableFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名------------------------------------------------------------------------------------------------- 3. 将SQL SERVER表里的数据插入到Access表中-- ======================================================在SQL SERVER 里运行:insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名 (列名1,列名2)select 列名1,列名2 from sql表 实例:insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'C:\db.mdb';'admin';'', Test) select id,name from Test INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)SELECT *FROM sqltablename------------------------------------------------------------------------------------------------- 二、 SQL SERVER 和EXCEL的数据导入导出 1、在SQL SERVER里查询Excel数据:-- ======================================================SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。SELECT *
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
------------------------------------------------------------------------------------------------- 2、将Excel的数据导入SQL server :-- ======================================================SELECT * into newtableFROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 实例:SELECT * into newtableFROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions------------------------------------------------------------------------------------------------- 3、将SQL SERVER中查询到的数据导成一个Excel文件-- ======================================================T-SQL代码:EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'参数:S 是SQL服务器名;U是用户;P是密码说明:还可以导出文本文件等多种格式 实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"' EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword' 在VB6中应用ADO导出EXCEL文件代码: Dim cn As New ADODB.Connectioncn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"------------------------------------------------------------------------------------------------- 4、在SQL SERVER里往Excel插入数据:-- ======================================================insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3) T-SQL代码:INSERT INTO OPENDATASOURCE('Microsoft.JET.OLEDB.4.0', 'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$] (bestand, produkt) VALUES (20, 'Test') -------------------------------------------------------------------------------------------------总结:利用以上语句,我们可以方便地将SQL SERVER、ACCESS和EXCEL电子表格软件中的数据进行转换,为我们提供了极大方便! 参考:http://www.itrain.de/knowhow/sql/transfer/adhoc/
Public Sub AccesstoExcel(AccessPath As String, AccessTablename As String, ExcelPath As String, ExcelSheetName As String)
Dim RsAccesstoExcel As New ADODB.Recordset
Dim CnAccesstoExcel As New ADODB.Connection
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Set xlApp = CreateObject("Excel.Application") '´´½¨EXCEL¶ÔÏó
Set xlBook = xlApp.Workbooks.AddxlApp.Worksheets(ExcelSheetName).Activate
Dim i As Integer
Dim mm As Integer
Dim nn As Integer
Dim jj As IntegerCnAccesstoExcel.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessPath & ";Persist Security Info=False"
CnAccesstoExcel.CursorLocation = adUseClient
CnAccesstoExcel.Open
RsAccesstoExcel.Open "select * from " & AccessTablename, CnAccesstoExcel, adOpenDynamic, adLockOptimisticFor i = 1 To RsAccesstoExcel.Fields.Count
xlApp.Cells(1, i).Value = RsAccesstoExcel.Fields.Item(i - 1).Name
Next
mm = 1
RsAccesstoExcel.MoveFirst
Do While RsAccesstoExcel.EOF <> True
mm = mm + 1
For nn = 1 To RsAccesstoExcel.Fields.Count
If RsAccesstoExcel.Fields.Item(nn - 1).Value <> "" Then
xlApp.Cells(mm, nn).Value = RsAccesstoExcel.Fields.Item(nn - 1).Value
Else
xlApp.Cells(mm, nn).Value = " "
End If
Next
RsAccesstoExcel.MoveNext
Loop
xlApp.DisplayAlerts = False
xlBook.SaveAs (ExcelPath)
xlBook.Close (False)
Set xlApp = Nothing
If CnAccesstoExcel.State <> adStateClosed Then CnAccesstoExcel.Close
End Sub