模拟在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'?
然后,不pipe我点击了什么 – 是或否,公式被更新,以前重新计算的所有值都会丢失。
然后,我尝试强制Excel不通过将XlCalculation设置为Manual来重新计算。 在这个改变之后,Open停止工作,抛出一个COMException(没有其他信息)。
System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT : 0x800A03EC at Microsoft.Office.Interop.Excel.ApplicationClass.set_Calculation( XlCalculation RHS)
我完全卡住了。 我不能重新计算,因为这会弄乱所有的数字。 我不能将XlCalcualtion设置为手动,因为它会抛出exception。
任何帮助表示赞赏。
没有首先打开工作簿不能设置计算属性。 这听起来像Catch 22,但它实际上并不是你想要阻止的“计算” – 你只是不希望它更新链接到外部源的单元格。
Open方法采用可选的UpdateLinks参数。 设置为false,你应该没问题。
在设置XlCalculation
属性之前需要打开工作簿的Excel引擎中有一个限制。 因此,最简单的解决scheme是创build一个新的工作簿 ,然后将XlCalculation
设置为所需的模式,然后用实际数据打开文件。
- XLL插件开发 – Excel SDKfunction问题
- 在C#4.0中创build和closuresExcel文件后,Excel仍然在任务pipe理器中运行
- 如何closures在一个循环内创build多个MemoryStream?
- 在C#中查找Excel错误单元格
- Excel的C#OpenXML的:我怎么能在Excel中添加新行后获得单元格的位置,(Row row = new Row()); 没有使用Excel国际刑警组织或macros
- 点在一个圆上,有限制。 如何计算没有angular度,但半径和中心点?
- 无法使用ExcelLibrary打印电子表格
- 在Excel中从C#中的列向标记中添加标签
- NPOI中的ActiveWorkbook