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

VB.NET Discussion :

OpenXML Tableaux Word


Sujet :

VB.NET

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut OpenXML Tableaux Word


    J'utilise Office OpenXML pour produire des documents Word par le biais d'un modèle que j'ai créé en *.docx et que je rempli via des signets.
    J'aimerais ajouter une liste de tableaux Word sur un signet mais lorsque j'ouvre le document, Word considère mes tableaux comme un seul et les fusionne donc.
    Comment peut-on éviter ce comportement ?

    Mon code d'insertion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
                Public Sub InsererTableauWord(ByVal bookmark As String,
                                              ByRef liste As List(Of WP.Table))
     
                    Dim _exit As Boolean = False
                    Dim body = _doc.Document.GetFirstChild(Of WP.Body)()
                    Dim paras = body.Descendants(Of WP.Paragraph)()
     
                    For Each para In paras
                        Dim bookMarkStarts = para.Elements(Of WP.BookmarkStart)()
                        Dim bookMarkEnds = para.Elements(Of WP.BookmarkEnd)()
     
                        For Each BookmarkStart In bookMarkStarts
                            If BookmarkStart.Name = bookmark Then
                                Dim id = BookmarkStart.Id.Value
                                Dim b = bookMarkEnds.First(Function(x) x.Id.Value = id)
                                Dim run = New WP.Run()
     
                                For Each tab As WP.Table In liste
                                    run.Append(tab)
                                Next
                                para.InsertBefore(run, b)
     
                                _exit = True
                                Exit For
                            End If
                        Next
     
                        If _exit Then
                            Exit For
                        End If
                    Next
                End Sub
    D'avance,
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je ne connais pas Office OpenXML, et je suis un peu plus familier avec le SDK OpenXML et la dll indispensable DocumentFormatOpenxml.

    Ceci dit, d'une manière plus générale, quand on utilise un signet pour insérer quelque chose dans un document, le signet est le plus souvent détruit, à moins de déplacer le point d'insertion (du moins en VBA) à côté du signet avant d'insérer (ou de coller). Et là, il me semble que tu le fais, mais je ne suis pas sûr.

    Quoi qu'il en soit, si ce n'est pas ce que tu fais déjà, ou si ce n'est pas déjà dans ton document, j'insérerais tous les signets avant d'insérer les tableaux et je bouclerais sur les signets eux-mêmes. Mais comme je ne suis pas familier avec Office OPenXML, je suis peut-être dans le champ.

    P.S. As-tu essayé en mettant ou en laissant un paragraphe vide après le tableau fraîchement créé.

    P.P.S. Si jamais tu ne le connaissais pas, tu peux jeter un œil sur DocX. Un composant .net pour créer des documents Word.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    P.S. As-tu essayé en mettant ou en laissant un paragraphe vide après le tableau fraîchement créé.


    Ceci fonctionne très bien, merci pour l'astuce
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. Tableaux WORD vers HTML
    Par luxmen dans le forum VBA Word
    Réponses: 15
    Dernier message: 02/02/2009, 12h01
  2. Duplication de tableaux Word sous VBA Excel
    Par gilles06 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/01/2008, 11h49
  3. afficher limites tableaux word
    Par sparfait dans le forum Word
    Réponses: 1
    Dernier message: 08/01/2007, 21h53
  4. Tableaux Word ----> html
    Par luxmen dans le forum VBA Word
    Réponses: 9
    Dernier message: 01/12/2005, 22h27
  5. Comment faire un retour a la ligne dans un tableaux Word
    Par alexmorel dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 17/06/2004, 09h31

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