COMException (0x80010108 - RPC_E_DISCONNECTED) при закрытии Excel.Workbook - PullRequest
3 голосов
/ 11 марта 2010

Когда я запускаю следующий код, я получаю исключение ниже:

''# 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 ]

6 голосов
/ 11 марта 2010

RPC_DISCONNECTED ... страшная проблема " Вызванный объект отключился от своих клиентов. " проблема. Существует множество причин, похоже, что вы рассмотрели проблему глобальных переменных с помощью Excel.. Можете ли вы поставить первый ReleaseCOM(ReportSheet) ниже ReportBook(Close) и запустить его? Кроме того, проверьте это .

0 голосов
/ 11 марта 2010

Я не могу сказать, почему происходит сбой, основываясь на коде, который вы показываете.

Рассматривали ли вы переход от автоматизации Excel с помощью COM Interop к стороннему компоненту?

SpreadsheetGear for .NET позволит вам загружать книги Excel и получать значения / получать форматированный текст / пересчитывать формулы / и т. Д. ... без проблем, связанных с COM Interop.

Вы можете посмотреть живые образцы ASP.NET здесь и загрузить бесплатную пробную версию здесь , если хотите попробовать сами.

Отказ от ответственности: я владею SpreadsheetGear LLC

...