【发布时间】:2011-06-30 19:47:08
【问题描述】:
我需要以只读方式使用 C# 打开 Excel 工作簿。那里没有问题。但是,如果该工作簿是在启用自动过滤器的情况下保存的,我需要使用 c# 将其关闭,以便我可以将工作表值读入我的班级。问题是,如果一个单元格中有用户定义的函数,该单元格将显示#VALUE!关闭自动过滤器而不是正确值时出现错误。如果我仅使用 Excel 手动关闭自动过滤器,这不是问题。所以我知道用户定义的函数本身没有问题。
这是我正在做的事情:
Excel.Application app = new Excel.Application();
Excel.Workbook CIRworkbook;
var missing = Missing.Value;
bool openAsReadOnly = true;
CIRworkbook = (Excel.Workbook)(app.Workbooks.Open(xlsFile, missing, openAsReadOnly, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing));
app.get_Range("A:IV", missing).Worksheet.AutoFilterMode = false;
app.CalculateFull();
app.CalculateFull() 行对删除 #VALUE 没有影响!错误。
【问题讨论】:
-
UDF 是否包含在工作簿或加载项中?我似乎记得通过自动化打开 Excel 时加载项没有加载。
-
UDF 在工作簿的一个模块中。
-
您是否尝试过使 Excel 实例可见?这能解决问题吗?或者尝试 app.CalculateFullRebuild() 代替。刚刚做了一个快速测试,我没有在这里看到你的问题。