[英]Emulate Open Excel in C#
我有一个可能调用 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 不重新计算。 Open 在此更改后停止工作,并引发 COMException(没有其他信息)。
System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT
: 0x800A03EC
at Microsoft.Office.Interop.Excel.ApplicationClass.set_Calculation(
XlCalculation RHS)
我完全卡住了。 我无法重新计算,因为这会弄乱所有数字。 我无法将 XlCalcualtion 设置为 Manual,因为它会引发异常。
任何帮助表示赞赏。
Excel 引擎有一个限制,需要在设置XlCalculation
属性之前打开工作簿。 所以最简单的解决方案是创建一个新的工作簿,然后在使用实际数据打开文件之前将XlCalculation
设置为所需的模式。
如果不先打开工作簿,则无法设置 Calculation 属性。 这听起来像 Catch 22,但实际上并不是您要在此处阻止的“计算”——您只是不希望它更新链接到外部源的单元格。
Open 方法采用可选的 UpdateLinks 参数。 将此设置为false,您应该没问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.