c# - 在 C# 中模拟打开 Excel

标签 c# excel

我有一个可能调用 BDDE.EXE 的电子表格。当我在 Excel 中打开此电子表格时,一切正常。我可以在公式以“=BDDE”开头的单元格中看到值。然而,当我使用 C# 打开同一个文件时,Excel 首先显示一个警告

Remote data not accesible.
To access this data Excel needs to start another application. ...
Start application 'BDDE.EXE'?

然后无论我点击什么 - 是或否,公式都会更新,之前重新计算的所有值都会丢失。

然后我尝试通过将 XlCalculation 设置为“手动”来强制 Excel 不重新计算。在此更改后,Open 停止工作,并抛出 COMException(没有其他信息)。

System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT
: 0x800A03EC
at Microsoft.Office.Interop.Excel.ApplicationClass.set_Calculation(
XlCalculation RHS)

我完全卡住了。我无法重新计算,因为那样会弄乱所有数字。我无法将 XlCalcualtion 设置为 Manual,因为它会抛出异常。

感谢任何帮助。

最佳答案

如果不先打开工作簿,则无法设置计算属性。这听起来像第 22 条军规,但实际上并不是您要在此处阻止的“计算”——您只是不希望它更新链接到外部源的单元格。

Open 方法采用可选的 UpdateLinks 参数。将其设置为 false,您应该没问题。

关于c# - 在 C# 中模拟打开 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6524509/

相关文章:

excel - excel中的静态时间戳

excel - Delphi 7 with..do 语句不适用于变体变量

excel - 在 Excel VBA 宏完成之前不会填充 Bloomberg 数据

c# - 即使没有参数,也使用 CIL OpCode (Ldarg_0)

c# - 从外部进程正常关闭 UWP 应用

c# - 按值将 C# 对象传递给 COM

c# - 如何将 C# 方法作为回调传递给 CLI/C++ 函数?

excel - 将数据点添加到 Excel 堆积条形图

excel - 确定具有多个 ID 和频率列的数字 ID 的总频率

c# - mmenu 菜单系统在 .Net 表单标签中不起作用