我有一个可能正在调用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设置为Manual来强制Excel不重新计算。此更改后打开停止工作,并抛出COMException(没有其他信息)。
System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT
: 0x800A03EC
at Microsoft.Office.Interop.Excel.ApplicationClass.set_Calculation(
XlCalculation RHS)
我完全卡住了。我无法重新计算,因为这会弄乱所有数字。我无法将XlCalcualtion设置为Manual,因为它会抛出异常。
感谢任何帮助。
答案 0 :(得分:2)
Excel引擎存在一个限制,在设置XlCalculation
属性之前需要打开工作簿。最简单的解决方案是create a new workbook,然后在用实际数据打开文件之前将XlCalculation
设置为所需模式。
答案 1 :(得分:2)
如果不先打开工作簿,则无法设置“计算”属性。这听起来像Catch 22,但它实际上并不是你想要阻止的“计算” - 你只是不希望它更新链接到外部源的单元格。
Open方法采用可选的UpdateLinks参数。将此设置为false,您应该没问题。