COMException (0x80010108 - RPC_E_DISCONNECTED) Lors de la Fermeture d'Excel.Classeur
Lorsque j'exécute le code suivant, je reçois l'exception ci-dessous:
''# 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))
Remarque: Toutes les données semble avoir été récupéré correctement.
Merci de m'aider à diagnostiquer et à surmonter cette erreur.
OriginalL'auteur Steven | 2010-03-10
Vous devez vous connecter pour publier un commentaire.
RPC_DISCONNECTED...le redoutable "L'objet invoqué s'est déconnecté de ses clients." question. Il y a une tonne de causes pour cela, on dirait que vous avez couvert les variables globales problème avec
Excel.
. Pouvez-vous mettre le premierReleaseCOM(ReportSheet)
ci-dessousReportBook(Close)
et l'exécuter? Aussi, découvrez cette.L'homme, désolé d'entendre cela. J'ai traité de cette question à quelques reprises et il a toujours été comme de la sorcellerie pour le faire fonctionner. Le principal problème ici est que par le temps que vous obtenez à
ReportBook.Close(True)
Excel n'est plus la gestion de ReportBook - quelque chose est de le relâcher - d'où l'erreur. Avez-vous essayé un code étape par avec de débogage de l'ajout d'une montre pour ReportBook?De se! Code de gué travaillé. Mon code accidentellement ouvert deux fois le même fichier et fermé par deux fois (une fois puis s'est écrasé lors de la fermeture d'un deuxième temps). Merci pour votre aide.
Heureux d'entendre cela. Cette erreur est vraiment frustrant, donc c'est super ce que vous avez des choses travaillé à!
OriginalL'auteur Todd Main
Je ne peux pas dire pourquoi, c'est de ne pas en s'appuyant sur le code que vous projetez.
Avez-vous envisagé de commutation à partir d'Excel Automation à l'aide de COM Interop à une 3ème partie composant?
SpreadsheetGear pour .NET vous permettra de charger les classeurs Excel et d'obtenir des valeurs de /get texte au format /recalculer les formules /etc... sans les problèmes liés à l'Interopérabilité COM.
Vous pouvez voir en direct ASP.NET les échantillons ici et télécharger l'essai gratuit ici si vous voulez essayer vous-même.
Avertissement: je possède SpreadsheetGear LLC
Si vous êtes ok de travail avec xlsx puis il y a EPPlus qui est gratuit! epplus.codeplex.com
OriginalL'auteur Joe Erickson