【问题标题】:DataTable to .accdb database数据表到 .accdb 数据库
【发布时间】:2012-10-17 23:39:47
【问题描述】:

我正在使用 Excel 工作表中的数据填充数据集。我现在需要将此数据插入到具有相同结构的 Access 数据库中的表中。

约定要求我遍历 DataTable 的行并为每个行进行 INSERT 查询,但我想知道是否有更有效的方法来完成此操作?也许类似于 SQL Server 的 SqlBulkCopy?

这是我目前的代码:

    Dim connection As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath(path) & ";Extended Properties=Excel 12.0;")
    Dim adapter = New OleDbDataAdapter("SELECT * FROM [Sheet1$] WHERE EmpID IS NOT NULL", connection)
    Dim results = New System.Data.DataSet
    connection.Open()
    adapter.Fill(results)
    connection.Close()
    connection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("~/App_Data/Leaves.accdb"))
    `Now, short of a loop, how can I insert results.Tables(0) into my database?

感谢您的帮助。

【问题讨论】:

  • 您可以直接从 Excel 表复制到 Access 表。我建议你这样做。
  • @Remou 我该怎么做呢? (请注意,由于各种原因,我无法使用 Interop。)

标签: asp.net excel ms-access datatable oledb


【解决方案1】:

可以使用ADO,例如:

INSERT INTO Table1 ( ADate ) 
SELECT SomeDate FROM [Excel 8.0;HDR=YES;DATABASE=Z:\Docs\Test.xls].[Sheet1$a1:a4]

连接到 Access 数据库的位置。如果您希望使用整个工作表,请将 [Sheet1$] 用作您的表格,如果您希望使用命名范围,只需按名称引用即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2013-04-08
    • 2011-03-20
    相关资源
    最近更新 更多