C#无法使用oledb

时间:2017-12-13 13:28:20

标签: c# excel oledb shared overwrite

尝试使用C#中的oledb更新excel文件。

我需要该程序能够更新该文件中的一列,即使其他用户打开了这个excel文件。

  • 如果我将文件设置为非共享,我首先在Excel中打开该文件,然后执行该程序。该程序能够更新所需列中的某些单元格,但有些则不会报告“Microsoft Office Access数据库引擎因为您和其他用户同时尝试更改相同数据而停止了该过程”。单元格更改,程序可以更新,程序完成后立即反映在我的Excel中。所以结论是,可以更新一些(但不是全部)单元格(我相信没有人更新它们。)

  • 如果我将excel文件设置为shared,我可以更新列中的所有单元格而不会出错(检查文件中的更新数据),但在我的Excel中,单元格不会更改,如果我保存文件之后我的excel,程序所做的更改将被旧值覆盖。所以这根本不起作用。

所以没有方法是成功的。请建议:(。

编写c#程序的一部分:

System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
        var constring = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;Importmixedtypes=text;typeguessrows=0;HDR=YES\"", "c:\\file.xlsx");
        var con = new OleDbConnection(constring);
        try
        {
            var sql = "UPDATE [Direct shipment$] SET [TNT Tracking No] = \'" + txtTracking.Text + "\' WHERE [DS Number] = "+ txtRMA.Text;
            con.Open();
            myCommand.Connection = con;
            myCommand.CommandText = sql;
            myCommand.ExecuteNonQuery();
            con.Close();
        }
        catch (Exception exc)
        {
            MessageBox.Show(exc.Message);
        }
        finally
        {
            if (con.State == ConnectionState.Open)
                con.Close();
        }

0 个答案:

没有答案