【问题标题】:MS Access/VB.Net - how can I insert rows from an Excel sheet data into MS Access table?MS Access/VB.Net - 如何将 Excel 工作表数据中的行插入 MS Access 表?
【发布时间】:2012-10-04 19:18:39
【问题描述】:

我的程序是用 VB.NET 编写的,我有一个只有一列的 Excel 表,列的类型是文本。现在我想将excel表的所有行添加到MS Access表中。

我的 Access 表有 5 列,我必须为其余字段提供一些静态数据。我不能让它们清空,因为我的表结构不允许我让它们清空。它们是强制性的。

我的算法是这样工作的

  • 将 Excel 工作表数据读入 DataTable
  • 循环到DataTable所有行的末尾
  • 附加每个单元格的文本和我的一些静态信息以制作查询字符串

    INSERT into TableName(c1,c2,c3) 
    values 
    (v1,v2,v3),
    (v1,v2,v3),
    (v1,v2,v3),
    (v1,v2,v3)
    ...
    ...
    (n1,n2,n3);
    
  • 执行此查询

但是我在这个查询中遇到了错误,有什么建议吗?

【问题讨论】:

  • 如果您只执行 5 列中的 3 列,则需要提供要插入的列,您还需要每行插入 1 行。
  • 如果我每行执行一次 INSERT,那么我将承担性能风险。它减慢了循环速度
  • 我也看过this post但还是没有进展
  • 好的,你遇到了什么实际错误?
  • 查询无效!我还尝试在 MS Access 上手动执行此查询并得到';'在 (+) 处缺失 INSERT into TableName(c1,c2,c3) 值 (v1,v2,v3)+

标签: sql database vb.net ms-access


【解决方案1】:

您可以针对连接运行 SQL 以直接与 Access 和 Excel 交互。例如,使用连接:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\Test.xlsm;
Extended Properties="Excel 12.0 xml;HDR=Yes;";

或喷气机

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Z:\Test.xls;
Extended Properties="Excel 8.0;HDR=Yes;";

您可以运行以下 SQL:

INSERT INTO [;DATABASE=Z:\Docs\Test.accdb].Table1 (ID,Atext) 
SELECT ID, AText FROM [Sheet7$] 

或喷气机

INSERT INTO [;DATABASE=Z:\Docs\Test.mdb].Table1 (ID,Atext) 
SELECT ID, AText FROM [Sheet7$] 

【讨论】:

  • 它是否也适用于 *.mdb 甲酸盐?还是我必须改变一下?
  • 如果您有 ACE 驱动程序,可以免费下载,它将与 mdb 一起使用,否则,使用上面提到的 Jet 连接字符串。
猜你喜欢
  • 2019-08-05
  • 2013-07-20
  • 2018-07-25
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多