COMException(0x80010108 - RPC_E_DISCONNECTED)关闭Excel.Workbook时

时间:2010-03-10 22:37:02

标签: vb.net excel interop com-interop excel-interop

当我运行以下代码时,我得到以下例外:

''# NOTE: ExcelApp is a Private main form variable
Dim ReportBooks As Excel.Workbooks = ExcelApp.Workbooks
Dim ReportBook As Excel.Workbook = ReportBooks.Open(localFilename)
Dim ReportSheet As Excel.Worksheet = ReportBook.Sheets("Report")

''# Retreive data from sheet

ReleaseCOM(ReportSheet)
ReportBook.Close(True) ''# Error raised here
ReleaseCOM(ReportBook)
ReleaseCOM(ReportBooks)
ERROR:
COMException was unhandled
The object invoked has disconnected from its clients.
(Exception from HRESULT: 0x80010108 (RPC_E_DISCONNECTED))

注意:所有数据似乎都已正确检索。

请帮我诊断并克服此错误。

2 个答案:

答案 0 :(得分:6)

RPC_DISCONNECTED ...可怕的“调用的对象已与其客户端断开连接。”问题。这有很多原因,看起来你已经用Excel.覆盖了全局变量问题。你能把第一个ReleaseCOM(ReportSheet)放在ReportBook(Close)之下并运行吗?另外,请查看this

答案 1 :(得分:-3)

我不能根据您显示的代码说明为什么会失败。

您是否考虑过使用COM Interop从Excel Automation切换到第三方组件?

SpreadsheetGear for .NET将允许您加载Excel工作簿并获取值/获取格式化文本/重新计算公式/等...而没有与COM Interop相关的麻烦。

如果您想亲自试用,可以查看实时ASP.NET示例here并下载免费试用here

免责声明:我拥有SpreadsheetGear LLC