【发布时间】:2020-04-19 01:51:19
【问题描述】:
我在我的程序中使用 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);
有人知道问题出在哪里吗?
谢谢!
【问题讨论】:
-
我认为您在连接的扩展属性末尾缺少
HDR=YES。 -
我也试过了...谢谢!
-
尝试在 con.Close() 之后添加
con.Dispose();; -
还是不行。它甚至不会更新 1 行。
-
@utor 无论如何,最好使用Epplus 之类的库来直接创建和操作 Excel 文件,而无需通过 Excel 或 Jet 驱动程序。 Epplus 是一个原生 .NET Standard 库,可以在任何操作系统上运行,并且不关心 CPU 架构
标签: c# excel connection-string oledb