gpt4 book ai didi

c# - 从属 Excel 单元格不会自动更新

转载 作者:太空宇宙 更新时间:2023-11-03 22:03:47 26 4
gpt4 key购买 nike

这个方法是我写的(和其他帖子差不多)

public void update(string fileName, string sheetName)
{
string connString = connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(fileName) + ";Extended Properties='Excel 12.0;HDR=NO'";

try
{
OleDbConnection oledbConn = new OleDbConnection(connString);

oledbConn.Open();

OleDbCommand cmd = new OleDbCommand("UPDATE ["+sheetName+"$B5:B5] SET F1=17", oledbConn);

cmd.ExecuteNonQuery();

oledbConn.Close();
}
catch(Exception ex)
{
Debug.Write("Error: " + ex.Message);
}
}

并调用该方法:

update("test.xls", "test");

到目前为止,它工作正常,因为当我打开 test.xls 文件时,B5 更新为 17。但是,如果有一个单元格:B1依赖于B5:B1=B5*5,那么B1不会自动更新。为了更新 B1,我必须手动打开 Excel 文件并保存警告。我怎样才能以编程方式做到这一点?

最佳答案

我认为当您使用 ACE 驱动程序与 Excel 工作表交互时,您不能依赖 Excel 更新计算列。当您使用 OLEDB 对工作簿的工作表进行操作时,它将工作表视为类似结构的数据库表。

我想你可能想使用 OpenXML读/写文件。 StackOverflow 上有多个线程提供了有关使用 OpenXML 的更多信息,值得一试。

post向您展示如何使用 OpenXML 强制重新计算单元格。

关于c# - 从属 Excel 单元格不会自动更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9169315/

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