C# 为什么更新OLEDB查询什么都不做?

C# 为什么更新OLEDB查询什么都不做?,c#,excel,connection-string,oledb,C#,Excel,Connection String,Oledb,我正在程序中使用OLEDB更新excel工作表。Execute返回1作为行更新计数,但不更改任何内容。 我的代码如下: public static void updateExcel(string sql, string path) { try { OleDbConnection con; OleDbCommand comm = new OleDbCommand(); con = ne

我正在程序中使用OLEDB更新excel工作表。Execute返回1作为行更新计数,但不更改任何内容。 我的代码如下:

public static void updateExcel(string sql, string path)
    {
        try
        {
            OleDbConnection con;
            OleDbCommand comm = new OleDbCommand();

            con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                                            path +
                                            ";Extended Properties=Excel 12.0;");
            con.Open();
            comm.Connection = con;
            comm.CommandText = sql;
            int y = comm.ExecuteNonQuery();
            con.Close();
        }
        catch (Exception ex)
        {


        } 

    }
电话是:

string sql = "update [Sh1$] set j = j + ' AAAA ' where a = '" + excelData.Rows[i]["a"].ToString() + "'";
EXCEL.updateExcel(sql, excelFile);
有人知道问题出在哪里吗


谢谢

尝试使用以下命令重新写入:

using (OleDbConnection conn = new OleDbConnection(connectionString))
    {
        try
        {
            conn.Open();
            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = conn;
            cmd.CommandText = @"update [Sh1$] set j = j + ' AAAA ' where a = '" + excelData.Rows[i]["a"].ToString() + "'";
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            //exception here
        }
        finally
        {
             conn.Close();
             conn.Dispose();
        }
    }

检查excel中的单元格是否为空。如果是这样,这个:set j=j+'AAAA'将不起作用,因为j为NULL

在这种情况下,这将更好:

集合j='AAAA'


set j=IIFj为空,'AAAA',j+'AAAA'

我认为在连接的扩展属性末尾缺少HDR=YES。我也尝试过了…谢谢!尝试添加con.Dispose;服刑结束后;还是不行。它甚至不更新一行。@t或者在任何情况下,最好使用类似于直接创建和操作Excel文件的库,而不必通过Excel或Jet驱动程序。Epplus是一个本机.NET标准库,可在任何操作系统上运行,不关心CPU体系结构。最重要的是删除catch{},并找出真正的错误。也没有必要使用finally块-使用调用Dispose依次调用Close@PanagiotisKanavos. 没有错误-它不会在catch块处停止。