繁体   English   中英

在 C# 中模拟打开 Excel

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM