您的位置:首页 > 其它

快速将Access中某个表内容整体输出到Excel(转载+亲自实践)

2012-07-03 13:09 316 查看
vb.net将Access中内容输出到Excel中,最传统的方法就是一个个单元格的循环赋值,

不过当数据量比较大的时候,以上方法就太费时了.

可以考虑以下方法,

(下文转自微软网站:http://support.microsoft.com/default.aspx?kbid=247412

INFO:将数据从 Visual Basic 传输到 Excel 的方法)

使用“自动化”功能将 ADO 记录集传输到工作表区域

Excel 2000 引入了 CopyFromRecordset 方法,使您能够将 ADO(或 DAO)记录集传输到工作表上的某个区域。下面的代码说明了如何自动运行 Excel 2000、Excel 2002 或 Office Excel 2003,以及使用 CopyFromRecordset 方法传输 Northwind 示例数据库中 Orders 表的内容。

'Create a Recordset from all the records in the Orders table

Dim sNWind As String

Dim conn As New ADODB.Connection

Dim rs As ADODB.Recordset

sNWind = _

"C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _

sNWind & ";"

conn.CursorLocation = adUseClient

Set rs = conn.Execute("Orders", , adCmdTable)

'Create a new workbook in Excel

Dim oExcel As Object

Dim oBook As Object

Dim oSheet As Object

Set oExcel = CreateObject("Excel.Application")

Set oBook = oExcel.Workbooks.Add

Set oSheet = oBook.Worksheets(1)

'Transfer the data to Excel

oSheet.Range("A1").CopyFromRecordset rs

'Save the Workbook and Quit Excel

oBook.SaveAs "C:\Book1.xls"

oExcel.Quit

'Close the connection

rs.Close

conn.Close

Excel 97 还提供了一种 CopyFromRecordset 方法,但它只能用于 DAO 记录集。Excel 97 中的 CopyFromRecordset 不支持 ADO。

有关使用 ADO 和 CopyFromRecordset 方法的更多信息,请查看以下 Microsoft 知识库文章:

246335 (http://support.microsoft.com/kb/246335/ ) 如何使用“自动化”功能将数据从 ADO 记录集传输到 Excel

说明:

1.如果Access对象文件类型accdb,那么以上conn.open改为:

conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Mode=share Exclusive;Data Source=" & _

sNWind & ";"

2.conn.CursorLocation = adUseClient 作用不明,注释掉不影响输出Excel

3.Set rs = conn.Execute("Orders", , adCmdTable)中第一个参数就是Access中查询的表名

4.Set rs = conn.Execute("Orders", , adCmdTable)中第三个参数不设定即可,不影响输出Excel
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: