IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

sdk OpenXml : Modifier un document word pendant qu'il est ouvert dans word


Sujet :

C#

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    juin 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Conseil

    Informations forums :
    Inscription : juin 2014
    Messages : 76
    Points : 208
    Points
    208
    Par défaut sdk OpenXml : Modifier un document word pendant qu'il est ouvert dans word
    Bonjour à tous,

    Je crois que tout est dans le titre :
    Je cherche à pouvoir modifier un document word en live pendant que celui-ci est ouvert sans utiliser l'interop.Word.
    J'ai essayé avec OpenXml mais j'ai une erreur à l'ouverture

    'Le processus ne peut pas accéder au fichier 'CHEMIN DU DOCUMENT ', car il est en cours d'utilisation par un autre processus.'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public static void modifDoc(string path)
    {
                WordprocessingDocument document = WordprocessingDocument.Open(path, true);
                document.MainDocumentPart.Document.Body.Append(new Paragraph("COUCOU"));
    }
    Quelqu'un saurait-il me dire si il existe un moyen de faire cela avec le sdk OpenXml ou si cela est possible avec un autre sdk ? Je cherche quelque chose de plus performant que l'interop word

    Merci par avance

  2. #2
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    juin 2007
    Messages
    850
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : juin 2007
    Messages : 850
    Points : 1 820
    Points
    1 820
    Par défaut
    Citation Envoyé par RSS13 Voir le message
    Je crois que tout est dans le titre :
    'Le processus ne peut pas accéder au fichier 'CHEMIN DU DOCUMENT ', car il est en cours d'utilisation par un autre processus.'
    Je crois que tout est dans le message d'erreur. Le document est verrouillé en écriture dans Word, donc tu ne peux y accéder ni en écriture, ni même en lecture à partir d'une autre processus. Donc soit tu le modifie à partir de Word (via un add on par exemple) soit tu le modifies sans l'ouvrir dans Word. Et c'est une règle générale du système de fichier, ce n'est pas juste comme ça avec Word mais avec tous les programmes.

  3. #3
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    juillet 2016
    Messages
    2 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2016
    Messages : 2 642
    Points : 10 365
    Points
    10 365
    Billets dans le blog
    21
    Par défaut
    Bonjour

    Citation Envoyé par RSS13 Voir le message
    Quelqu'un saurait-il me dire si il existe un moyen de faire cela avec le sdk OpenXml ou si cela est possible avec un autre sdk ? Je cherche quelque chose de plus performant que l'interop word
    Dans la mesure où Word verrouille les accès au fichier, la seule et unique manière de pouvoir le modifier est de passer par l'Interop Word. Il n'y a pas d'autres possibilités.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  4. #4
    Membre expert
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    mars 2005
    Messages
    1 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 1 739
    Points : 3 249
    Points
    3 249
    Par défaut
    Citation Envoyé par Noxen Voir le message
    Je crois que tout est dans le message d'erreur. Le document est verrouillé en écriture dans Word, donc tu ne peux y accéder ni en écriture, ni même en lecture à partir d'une autre processus. Donc soit tu le modifie à partir de Word (via un add on par exemple) soit tu le modifies sans l'ouvrir dans Word. Et c'est une règle générale du système de fichier, ce n'est pas juste comme ça avec Word mais avec tous les programmes.
    Je ne serai pas aussi catégorique au sujet de l'accès en lecture.
    J'utilise le code suivant pour lire des fichiers DOCX avec Open XML SDK et il fonctionne parfaitement même si le document est ouvert dans Word

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    stream = new FileStream(SourceName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    sourceDocument = WordprocessingDocument.Open(stream, false);
    Par contre, je n'ai jamais tenté d'écrire dedans.
    Je m'en sert de document référence pour générer d'autres documents à la volée.

    Citation Envoyé par RSS13
    document.MainDocumentPart.Document.Body.Append(new Paragraph("COUCOU"));
    Cela ne fonctionnera pas.
    La chaine en question doit être le XML externe du paragraphe.
    C'est à dire, au minimum une balise <w:p>.
    Le plus simple reste quand même d'utiliser les objets fait pour ça.
    Un Paragraph qui contient un Run qui Contient un Text (pour réaliser ton exemple)

  5. #5
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    juin 2014
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Conseil

    Informations forums :
    Inscription : juin 2014
    Messages : 76
    Points : 208
    Points
    208
    Par défaut
    Merci à tous pour vos retour,

    Oui effectivement j'avais bien compris que word bloque l'accès à la modification quand le document est ouvert... manifestement l'interop word reste la seule solution aujourd'hui pour modifier un document déjà ouvert. Je continuerai donc de l'utiliser dans ce cas précis.

    Merci encore à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2010] Modifier un document Word 2010 depuis une page Web
    Par angees dans le forum Word
    Réponses: 3
    Dernier message: 03/02/2015, 15h13
  2. Modifier un document Word avec Java
    Par Gstark dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 21/11/2013, 10h11
  3. Modifier un document word avec C#
    Par aitbouhou dans le forum Windows Forms
    Réponses: 0
    Dernier message: 23/03/2010, 12h39
  4. ecrire ou modifier un document word
    Par debutantasp dans le forum ASP
    Réponses: 10
    Dernier message: 06/03/2008, 11h59
  5. [FPDF] Modifier un document Word et l'exporter au format PDF
    Par nicocsgamer dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 02/11/2005, 21h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo