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

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,VB.NET 提供了多种方法将 Excel 文件转换为 Access 数据库,以下是其的两种方法: 1. 使用 OleDb 连接器 你可以使用 OleDb 连接器连接 Excel 文件和 Access 数据库,并将数据从 Excel 文件读取到 DataSet 对象,然后将 DataSet 对象写入 Access 数据库。以下是代码示例: ```vb.net Dim excelConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myExcelFile.xlsx;Extended Properties='Excel 12.0 Xml;HDR=YES;'" Dim accessConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;" Dim excelConnection As OleDbConnection = New OleDbConnection(excelConnectionString) Dim accessConnection As OleDbConnection = New OleDbConnection(accessConnectionString) Dim adapter As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM [Sheet1$]", excelConnection) Dim dataSet As DataSet = New DataSet() adapter.Fill(dataSet, "ExcelData") Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter) builder.QuotePrefix = "[" builder.QuoteSuffix = "]" adapter.UpdateCommand = builder.GetUpdateCommand() adapter.InsertCommand = builder.GetInsertCommand() adapter.DeleteCommand = builder.GetDeleteCommand() accessConnection.Open() adapter.Update(dataSet.Tables("ExcelData")) accessConnection.Close() ``` 在上面的代码,我们首先创建了两个 OleDbConnection 对象,一个用于连接 Excel 文件,一个用于连接 Access 数据库。然后,我们使用 OleDbDataAdapter 对象读取 Excel 文件的数据,并将数据填充到 DataSet 对象。接下来,我们创建了一个 OleDbCommandBuilder 对象,用于自动生成更新、插入和删除命令。最后,我们使用 OleDbDataAdapter 对象将 DataSet 对象的数据写入 Access 数据库。 2. 使用 COM 对象 你也可以使用 COM 对象来读取 Excel 文件,然后使用 ADO.NET 连接器将数据写入 Access 数据库。以下是代码示例: ```vb.net Dim excelApplication As Object = CreateObject("Excel.Application") Dim excelWorkbook As Object = excelApplication.Workbooks.Open("C:\myFolder\myExcelFile.xlsx") Dim excelWorksheet As Object = excelWorkbook.Worksheets("Sheet1") Dim accessConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;" Dim accessConnection As OleDbConnection = New OleDbConnection(accessConnectionString) Dim adapter As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM [Sheet1$]", accessConnection) Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter) builder.QuotePrefix = "[" builder.QuoteSuffix = "]" Dim dataSet As DataSet = New DataSet() adapter.Fill(dataSet, "AccessData") Dim table As DataTable = dataSet.Tables("AccessData") For rowIndex As Integer = 2 To excelWorksheet.UsedRange.Rows.Count Dim row As DataRow = table.NewRow() For columnIndex As Integer = 1 To excelWorksheet.UsedRange.Columns.Count row(columnIndex - 1) = excelWorksheet.Cells(rowIndex, columnIndex).Value Next table.Rows.Add(row) Next accessConnection.Open() adapter.Update(dataSet.Tables("AccessData")) accessConnection.Close() excelWorkbook.Close(False) excelApplication.Quit() ``` 在上面的代码,我们首先使用 CreateObject 函数创建了一个 Excel.Application 对象,并打开了 Excel 文件和工作。然后,我们创建了一个 OleDbDataAdapter 对象,并使用 OleDbCommandBuilder 对象自动生成更新、插入和删除命令。接下来,我们使用 ADO.NET 连接器将数据从 Access 数据库读取到 DataSet 对象。然后,我们遍历 Excel 工作的数据,将数据填充到 DataTable 对象。最后,我们使用 OleDbDataAdapter 对象将 DataTable 对象的数据写入 Access 数据库。注意,我们需要手动关闭 Excel 应用程序和工作簿。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值