我有两个Excel工作表。

这是第一张纸。
c# - 如何使用C#更新Excel工作表-LMLPHP

这是第二张纸
c# - 如何使用C#更新Excel工作表-LMLPHP

在第一页中有一个列称为语言,在第二页中有一个相似的列。所以现在我要根据它们的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/

10-10 11:39