it-swarm-eu.dev

System.Runtime.InteropServices.COMException (0x800A03EC)

La méthode Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs() fonctionne correctement sur le serveur Windows 2003 et également sur XP, mais pas sur le serveur Windows 2008. Je l'ai copiée car toutes les Dll et autorisations lui ont été attribuées.

J'ai également essayé toutes les solutions données sur le net, telles que les paramètres de culture et l'autorisation DCOM.

Obtenir l'erreur suivante:

System.Runtime.InteropServices.COMException (0x800A03EC): Exception de HRESULT: 0x800A03EC

à 

Microsoft.Office.Interop.Excel.WorkbookClass.SaveAs (Nom de fichier de l'objet, Format de l'objet, Mot de passe de l'objet, Objet WriteResPassword, Object ReadOnlyRecommended, Création de l'objet, Création, Sauvegarde, XlSaveAsAccessMode TextCodepage, Object TextVisualLayout, Object Local)

S'il vous plaît aider ..!

27
Sameer S

Réponse trouvée ....... !!!!!!!

Officiellement, Microsoft Office 2003 Interop n'est pas pris en charge sur Windows Server 2008 par Microsoft. 

Mais après de nombreuses permutations et combinaisons avec le code et la recherche, nous avons trouvé une solution qui convient à notre scénario.

La solution consiste à établir une distinction entre la manière dont Windows 2003 et 2008 conservent la structure de dossiers, car Office Interop dépend du dossier de bureau pour le fichier ouvert/enregistré de manière intermédiaire. Le système 2003 héberge le dossier du bureau sous systemprofile, absent en 2008.

Ainsi, lorsque nous créons ce dossier en 2008 sous la hiérarchie respective indiquée ci-dessous; le bureau Interop peut enregistrer le fichier selon les besoins. Ce dossier doit être créé sous 

C:\Windows\System32\config\systemprofile

ET

C:\Windows\SysWOW64\config\systemprofile

Cela a fonctionné pour moi ... 

Vérifiez également si .NET 1.1 est installé car il est requis par Interop et n'est pas préinstallé par Windows Server 2008.

Ou vous pouvez également utiliser la méthode SaveCopyas () en prenant simplement un argument comme chaîne de nom de fichier)

Merci les gars..!

48
Sameer S

Essayez ceci comme cela a fonctionné pour moi ...

  1. Allez dans "Démarrer" -> "Exécuter" et entrez "dcomcnfg"
  2. Cela fera apparaître la fenêtre des services composants, développez "Racine de la console" -> "Ordinateurs" -> "Configuration DCOM"
  3. Trouvez "Microsoft Excel Application" dans la liste des composants.
  4. Faites un clic droit sur l'entrée et sélectionnez "Propriétés"
  5. Allez sur l'onglet "Identité" dans la boîte de dialogue des propriétés.
  6. Sélectionnez "L'utilisateur interactif".

courtoisie de Dernier paragraphe mentionné ici

10
Pratik Gaikwad

Certaines recherches sur Google révèlent que vous avez potentiellement un fichier corrompu:

http://bitterolives.blogspot.com/2009/03/Excel-interop-comexception-hresult.html

et que vous pouvez dire à Excel de l'ouvrir quand même avec le paramètre CorruptLoad, avec quelque chose comme ...

Workbook workbook = excelApplicationObject.Workbooks.Open(path, CorruptLoad: true);
5
Eamon Nerbonne

Je voyais cette même erreur en essayant de sauvegarder un fichier Excel. Le code fonctionnait bien lorsque j'utilisais MS Office 2003, mais après la mise à niveau vers MS Office 2007, j'ai commencé à voir cela. Cela se produirait à chaque fois que j'essayais de sauvegarder un fichier Excel sur un serveur ou un partage de fichier distant.

Ma solution, bien que rudimentaire, a bien fonctionné. Je viens d'avoir le programme enregistrer le fichier localement, comme sur le lecteur C:\de l'utilisateur. Ensuite, utilisez la méthode "System.IO.File.Copy (Fichier, Destination, Remplacer)" pour déplacer le fichier sur le serveur. Ensuite, vous pouvez supprimer le fichier sur le lecteur C: \.

Fonctionne bien et simple. Mais certes pas l'approche la plus élégante.

J'espère que cela t'aides! J'avais beaucoup de mal à trouver des solutions sur le Web jusqu'à ce que cette idée me vienne à l'esprit.

2
GreeenMachin

C’est un problème de permission lorsque IIS est en cours d’exécution .__J'ai eu ce problème et je l’ai résolu de cette façon 

Je suis allé sur des dossiers 

C:\Windows\System32\config\SystemProfile  

et 

C:\Windows\SysWOW64\config\SystemProfile  

sont des dossiers système protégés, ils ont généralement le verrou. 

Cliquez avec le bouton droit de la souris sur -> Sécurité de la carte -> Cliquez sur Édition-> Ajouter untente "Utilisateur d'autenticadet" et attribuer des autorisations. 

À ce stade, tout est résolu, si vous avez toujours des problèmes, essayez d’accorder toutes les autorisations à "Tout le monde".

1
daniele3004

Pour tous ceux qui connaissent encore ce problème, je viens de passer 2 jours à traquer la chose sanglante. J'avais la même erreur quand il n'y avait pas de lignes dans le jeu de données . Cela semble évident, mais le message d'erreur est très obscur, d'où 2 jours. 

0
trailmax