我有一个可能调用 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/