C#无法使用oledb更新excel文件(共享或非共享)

试图用C#中的oledb来更新excel文件。

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

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

  • 如果我设置excel文件共享,我可以更新列中的所有单元格没有错误(检查文件中更新的数据),但在我的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(); }