web-dev-qa-db-fra.com

Interop.Word Documents.Open est null

J'essaie d'ouvrir le fichier .docx et de le convertir en PDF à l'aide d'Interop.Word.Application. Cela fonctionne comme une application console, mais si j'utilise la même chose dans mon application web, cela ne fonctionne pas. J'ai essayé de voir les autorisations sur le dossier. J'ai donné 'Service réseau' avec un contrôle total, mais j'obtiens toujours une référence d'objet non définie dans Word.Documents.Open. Pourriez-vous s'il vous plaît laissez-moi savoir quel pourrait être le problème? Je suis coincé avec cette erreur. S'il vous plaît, faites-moi savoir. J'apprécie toutes les suggestions. Je vous remercie.

    Microsoft.Office.Interop.Word.Application Word = new Microsoft.Office.Interop.Word.Application();

    object oMissing = System.Reflection.Missing.Value;

    Word.Visible = false;
    Word.ScreenUpdating = false;
    string fileName = @"c:\OUTPUT\test.docx");
    Document doc = Word.Documents.Open(filename, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing);
        doc.Activate();
16
nav100

Si vous cherchez toujours la réponse, je l’ai trouvée il ya un instant pour mon projet.

Ouvrez les paramètres de configuration DCOM:

  1. Démarrer -> dcomcnfg.exe 
  2. Ordinateur 
  3. Ordinateur local
  4. Config DCOM 
  5. Rechercher Microsoft Word 97-2003 Documents -> Propriétés

Onglet Identity, passer de Launching User à Interactive User 

58
Gianni B.

Essayez ceci, cela peut vous aider.

  • Créez un nouveau répertoire "Bureau" dans "C:\Windows\SysWOW64\config\systemprofile \"

cela fonctionne pour moi après une longue journée de recherche de la solution.

Cela semble être un problème de profil.

16
nacx08

Cela a fonctionné pour moi. https://social.msdn.Microsoft.com/Forums/en-US/0f5448a7-72ed-4f16-8b87-922b71892e07/Word-2007-documentsopen-returns-null -in-aspnet .

Si cela vous aide, s'il vous plaît faites-le répondre 

1
MJSL

Comme Paulie l'a déclaré dans son commentaire sur OP, je pense que le problème tient en grande partie à la présence de bibliothèques sur le serveur Web. Vous pourrez peut-être pirater pour que cela fonctionne sur une application Web, mais je vous le déconseille. 

EDIT: Argh, j’ai mal lu le message et j’ai juste supposé Excel. C’est ce que la plupart des gens recherchent lors de l’utilisation d’Office.Interop selon mon expérience;)

Il existe une bibliothèque ouverte qui fonctionne avec les formats DocX ( entrez la description du lien ici ). _ {Malheureusement il admet sur la page que les conversions vers des formats tels que PDF sont pratiquement impossibles sans les bibliothèques Office.Interop ( http://cathalscorner.blogspot.com/2009/10 /converting-docx-into-doc-pdf-html.html )

Ici est une alternative "prometteuse", mais YMMV.

0
Killnine

Pour résoudre cela, je devais faire les deux choses:

  • Créez les répertoires:

    • C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft \Windows\INetCac‌he
    • C:\Windows\System32\config\systemprofile\Desktop
  • Activer le réglage DCOM comme @gianni-b dit .

Si vous avez du mal à trouver l'entrée DCOM en raison d'une autre langue, vous pouvez procéder comme suit:

  1. Menu Démarrer> regedit
  2. Accédez à HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{00020906-0000-0000-C000-000000000046}
  3. Clic droit> Nouveau> Valeur de chaîne

    • Pour la clé, mettez RunAs
    • Pour Valeur, mettez Interactive User

Vous pouvez faire la même chose pour Excel sur AppID {00020812-0000-0000-C000-000000000046}.

0
vmassuchetto

J'ai fait les étapes suivantes et cela a bien fonctionné:

  • Créer le dossier du bureau
  • Changez l'élément DCOM pour vous connecter avec un utilisateur spécifique au lieu d'un utilisateur de lancement/interactif
  • Changement du service pour qu'il ait commencé avec le même utilisateur spécifique
0
Kevin Cloet

Il est fort probable que votre serveur Web contient une dll Word différente, peut-être plus ancienne. Je vous suggère de référencer une dll spécifique et de la copier sur le serveur Web, afin de vous assurer que vous utilisez la même dll Word que celle avec laquelle vous avez testé votre code et que vous savez que cela fonctionne. Problèmes lors de l'utilisation d'interop, cependant, Word interop est le seul dont vous pouvez être sûr qu'il convertira les fichiers Word le plus correctement.

0
Ben