我有两个Excel工作表。
这是第一张纸。
这是第二张纸
在第一页中有一个列称为语言,在第二页中有一个相似的列。所以现在我要根据它们的ID从第一张纸到第二张纸的语言数据。
下面是我的代码。
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
string sql = null;
MyConnection = new System.Data.OleDb.OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\consolidated.xls;Extended Properties=Excel 8.0;");
MyConnection.Open();
myCommand.Connection = MyConnection;
sql = "Update [second$] set [second$].[Language] =[first$].[Language] where [first$].[ID]= [second$].[ID] ";
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
MyConnection.Close();
出现以下错误:
System.Data.dll中发生了类型为'System.Data.OleDb.OleDbException'的未处理异常
附加信息:没有为一个或多个必需参数提供值。
我对SQL的了解还不是很熟练,所以我的SQL语法也可能是错误的...但是我不确定。
最佳答案
这是我能想到的最好的方法:)
var connectionStringBuilder = new System.Data.OleDb.OleDbConnectionStringBuilder();
connectionStringBuilder.DataSource = @"c:\dev\tmp\consolidated.xlsx";
connectionStringBuilder.Provider = "Microsoft.ACE.OLEDB.12.0";
connectionStringBuilder.Add("Extended Properties", "Excel 12.0;");
using (var connection = new System.Data.OleDb.OleDbConnection(connectionStringBuilder.ToString()))
{
connection.Open();
var updateCommand = connection.CreateCommand();
updateCommand.CommandText = "update [second$] S inner join [first$] F on S.ID = F.ID set S.Language = F.Language";
updateCommand.ExecuteNonQuery();
}
关于c# - 如何使用C#更新Excel工作表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43385528/