我很难将行插入到现有的表对象中。下面是我的代码片段:
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:\myExcelFile.xlsx" + ";Extended Properties=\"Excel 12.0;ReadOnly=False;HDR=Yes;\"";
using (OleDbConnection conn = new OleDbConnection(connectionString))
{
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = conn;
string insertQuery = String.Format("Insert into [{0}$] (ID, Title,NTV_DB, Type ) values(7959, 8,'e','Type1')", TabDisplayName);
cmd.CommandText = insertQuery;
cmd.ExecuteNonQuery();
cmd = null;
conn.Close();
}
因此,我将行插入到现成的表对象下面:
我还尝试在表对象中插入数据,如下所示:
string insertQuery = String.Format("Insert into [{0}$].[MyTable] (ID, Title,NTV_DB, Type ) values(7959, 8,'e','Type1')", TabDisplayName);
但我有个错误:
Microsoft Access数据库引擎找不到“MyTable”对象。确保该对象存在,并确保正确拼写其名称和路径名。如果“MyTable”不是本地对象,请检查网络连接或与服务器管理员联系。
如所见,表名为MyTable
确实存在。如果有人能对这个谜团有所了解,我会非常感激的。
发布于 2018-03-23 13:54:23
ADO.NET不能访问XL的表对象(也就是列表),也不能访问直接或间接引用表名或结构化引用的范围名称。ADO.NET可以访问引用表的单元格范围的表上的命名范围。
示例:名称MyTable
指=$A$1:$E$3
。所以你可以用Range
例如(Sheet1$A:E
)为此目的。在这种情况下,INSERT语句可以更改为如下内容:
string insertQuery = "INSERT INTO [Sheet1$A:E] (ID, Title,NTV_DB, Type) VALUES (7959, 8,'e','Type1')";
其他限制:
工作簿保护:ADO无法访问受密码保护的工作簿。 使用过的行:Ado将插入最后一个用过的行下面。注意!最后使用的行可以是空的。
和Tables
如前所述。
https://stackoverflow.com/questions/-100004298
复制相似问题