gpt4 book ai didi

c# - 更新 Excel 工作表时操作必须使用可更新查询

转载 作者:可可西里 更新时间:2023-11-01 07:53:34 27 4
gpt4 key购买 nike

尝试更新 Excel 工作表时出现此错误:

Server Error in '/ReadExcelData_Csharp' Application.
Operation must use an updateable query.

这是我正在使用的代码:

  querys = "UPDATE [Sheet1$] "+"SET [Number]=" +s.Trim()+ " WHERE [Number]=" + s2.Trim() ;
objcmc = new OleDbCommand(querys, conn);
objcmc.ExecuteNonQuery();

任何帮助将不胜感激。

这是我使用的连接:

if (strFileType.Trim() == ".xls")
{
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
}
else if (strFileType.Trim() == ".xlsx")
{
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strNewPath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
}

最佳答案

从连接字符串中删除 IMEX=2(或 IMEX=1),它将起作用。我已经多次测试了这个疯狂的解决方案,出于某种奇怪的原因删除 IMEX 似乎可以解决问题(至少对于 xlsx 文件而言)。

以下代码有效:

    static void Main(string[] args)
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "d:\\temp\\customers.xlsx" + ";Extended Properties=\"Excel 12.0;ReadOnly=False;HDR=Yes;\"";
string selectString = "INSERT INTO [Customers$](Id,Company) VALUES('12345', 'Acme Inc')";

OleDbConnection con = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand(selectString, con);

try
{
con.Open();
cmd.ExecuteNonQuery();
Console.WriteLine("Success");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
con.Dispose();
}
Console.ReadLine();
}
}

感谢来自 social.msdn.microsoft.com 的 RobertNet

关于c# - 更新 Excel 工作表时操作必须使用可更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7622492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com