【发布时间】:2015-10-06 16:19:34
【问题描述】:
如何在使用 c# 代码和 oledb 更新任何 excel 单元格时强制更新依赖单元格?我的网站托管在云环境中。用户单击按钮,当时我的代码从数据库中获取所需的值并更新几个 excel 单元格并提示用户下载此 excel 表。大量的计算取决于这个更新的 excel 单元格。
当我手动更新此单元格时,所有计算都可以正常工作,但使用 c# 代码更新时,它不起作用。
请在此处查看我的代码
String connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0 XML;HDR=NO\";";
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
string sql = null;
MyConnection = new System.Data.OleDb.OleDbConnection(connstring);
MyConnection.Open();
myCommand.Connection = MyConnection;
//term in months
sql = "UPDATE [InputSheet$C7:C7] SET F1 = " + model.Lender.ApprovedTerm;
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
//intrest rate
sql = "UPDATE [InputSheet$C8:C8] SET F1 = " + model.Lender.ContractRate;
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
//loan amount
sql = "UPDATE [InputSheet$C9:C9] SET F1 = " + model.Lender.ApprovedLoanAmt;
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
MyConnection.Close();
我不想使用 Open XML。有没有其他方法可以强制更新依赖单元格?
【问题讨论】:
-
“依赖细胞”是什么意思?你的意思是你想强制公式重新计算?它不会自己这样做。 为什么你不想使用 OpenXML?使用像 EPPlus 这样的库直接更新单元会更快、更容易、更安全(等等),不需要需要 JET 驱动程序。它supports formula recalculation
-
是的,我想强制公式重新计算。我不想使用开放 XML,因为每次我们在门户(云环境)上推送新版本时,我们都需要安装 Office 及其 OpenXML 的 SDK。
-
不,你没有!这是 195% 的错误!事实上,需要额外安装的是 OLEDB 提供程序。我认为您将 Open XML 与 Office Interop 混淆了。 Open XML SDK 只是一个用于处理办公文件的库。您可以像任何其他程序集一样将其添加到您的项目中,或者在其上使用库,例如 EPPlus
-
太棒了。试过 EPPlus。工作正常。谢谢...