在C#中模拟打开Excel

时间:2011-06-29 17:03:29

标签: 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设置为Manual来强制Excel不重新计算。此更改后打开停止工作,并抛出COMException(没有其他信息)。

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

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

Excel引擎存在一个限制,在设置XlCalculation属性之前需要打开工作簿。最简单的解决方案是create a new workbook,然后在用实际数据打开文件之前将XlCalculation设置为所需模式。

答案 1 :(得分:2)

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

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