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