快速将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
不过当数据量比较大的时候,以上方法就太费时了.
可以考虑以下方法,
(下文转自微软网站: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
相关文章推荐
- Excel 文本内容一行快速分为多行(亲自实践)
- EXCEL中将多个单元格内容合并到一个单元格中的方法(转帖+亲自实践)
- Excel的照相机功能(转载+亲自实践)
- Excel合并后的单元格,每个都有内容(转帖+亲自实践)
- vb.net从DataGridView复制到Excel.代码实现,解决中文乱码问题 (转载+亲自实践)
- 打开Excel,原有的数字内容都自动转换成日期格式的问题(亲自实践)
- 在ASP.NET中将数据直接输出成Excel内容
- C#.net(密码验证)(杨辉三角的输出)第一次上机实践内容
- 不生成Excel文件,将Datatable数据 Response.write 输出生成Excel (转载)
- 【Java】利用poi插件,把Excel内容读入Java,把Java中的内容输出到Excel
- 利用ASP.NET输出指定内容的WORD、EXCEL、TXT、HTM
- 在ASP.NET中将数据直接输出成Excel内容
- Excel 有条件的情况下,统计多列的总和(对比SUMIF和SUMPRODUCT)(亲自实践)
- Asp.Net输出指定内容的Word、Excel、TXT、HTM等类型的文档
- 下拉菜单内容自动更新的技巧(转帖+亲自实践)
- 【转载】cmd快速将N个txt内容合并到1个txt中
- Excel 2010 受保护的工作表中使用“组合”功能(亲自实践)
- Excel 英文月份转换为数值月份(亲自实践)
- Excel单元格内容变化时,自动添加系统时间批注(亲自实践)
- excel如何快速自动填充空白单元格上一行的内容