我很难将行插入到现有的表对象中。下面是我的代码片段:
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 14:16:53
如果执行以下代码:
var contents = new DataTable();
using (OleDbDataAdapter adapter = new OleDbDataAdapter(string.Format("Select * From [{0}$]", TabDisplayName), conn))
{
adapter.Fill(contents);
}
Console.WriteLine(contents.Rows.Count);//7938
将看到7938(截图中的最后一行号)。当插入新行时,它插入到7939位置。忽略(7929、7930、...)行中的空内容,因为EXCEL知道最后一个数字是7938。
解决办法:
https://stackoverflow.com/questions/-100004298
复制相似问题