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 :

documents Word de plusieurs pages


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut documents Word de plusieurs pages
    Bonjour à vous,

    Je me permets de venir vers vous...
    J'ai une application qui doit générer UN document Word à partir d'un modèle.

    Pour un dossier : aucun soucis, j'ai une page dans UN document.
    Pour deux dossiers : il me fait DEUX documents Word alors que je souhaiterais deux pages dans le même document.

    Voilà (en très gros) comment je procède actuellement :
    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
     
            // Connexion à Word
            Microsoft.Office.Interop.Word.Application msWord = new Microsoft.Office.Interop.Word.Application();
            msWord.Visible = true;
            object missing = System.Reflection.Missing.Value;
     
            Microsoft.Office.Interop.Word.Document nvDoc;
     
            // Choisir le modèle
            object templateName = @"Convoc.doc";
            for (i = 0; i < liste_convoc.Count; i++)
            {
                      /* Recherche les données du dossier (tronqué) */
     
                      nvDoc = msWord.Documents.Add(ref templateName, ref missing, ref missing, ref missing);
                    object field = "nom";
                    nvDoc.FormFields.get_Item(ref field).Result = dossier.Nom;
            }
            // Attribuer le nom du fichier
            object fileName = @"Mon document.doc";
     
            // Sauver le document
            nvDoc.SaveAs(ref fileName, ref missing, ref missing, ref missing, ref missing,
                                    ref missing, ref missing, ref missing, ref missing, ref missing,
                                    ref missing, ref missing, ref missing, ref missing, ref missing,
                                    ref missing);
    Avez-vous idée?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut
    Hello,

    J'ai observé cette page :
    http://support.microsoft.com/kb/301659/fr

    Mais ils passent par un fichier de données, ce que je ne veux et même ne peux pas faire.

  3. #3
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Bin ça parait normal, dans ta boucle for tu lui dis de créer un nouveau document à chaque passage:
    nvDoc = msWord.Documents.Add

    Modifie plutôt le document existant.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut
    Citation Envoyé par The_badger_man Voir le message
    Bin ça parait normal, dans ta boucle for tu lui dis de créer un nouveau document à chaque passage:
    nvDoc = msWord.Documents.Add

    Modifie plutôt le document existant.
    Mais alors si je sors le "Documents.Add" de la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            nvDoc = msWord.Documents.Add(ref templateName, ref missing, ref missing, ref missing);
     
            for (i = 0; i < liste_convoc.Count; i++)
            {
                    /* Recherche les données du dossier (code tronqué) */
     
                    object field = "nom";
                    nvDoc.FormFields.get_Item(ref field).Result = dossier.Nom;
            }
    Je vais bien avoir qu'un document Word mais risque fort de n'avoir que les données du dernier dossier traité.

    N'existe-t-il pas une fonction qui permettrait d'ajouter une nouvelle page à un document existant en tenant compte d'un modèle Word?
    Est-ce cela l'idée de modifier le document?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Par défaut insérer dans un document Word
    Pour celui qui tomberait sur ce sujet en utilisant la recherche...

    J'ai trouvé solution à mon problème :
    - en créant le premier document, en résumé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Microsoft.Office.Interop.Word.Application msWord = new Microsoft.Office.Interop.Word.Application();
    Microsoft.Office.Interop.Word.Document nvDoc;
    object missing = System.Reflection.Missing.Value;
    object templateName = "Le document.doc";
     
    nvDoc = msWord.Documents.Add(ref templateName, ref missing, ref missing, ref missing);
    - en créant de la même façon le deuxième fichier dans un document temporaire que j'ai nommé "tempDoc".
    - en insérant un saut de page à la fin du premier document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Object oTrue = true;
    Object oFalse = false;
    Object oEndOfDoc = "\\endofdoc";
    Object brk = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
     
    nvDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertBreak(ref brk);
    - enfin, en insérant le fichier temporaire à la fin du premier document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nvDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertFile(fileName.ToString(), ref missing, ref oFalse, ref oFalse, ref oFalse);
    tempDoc.Close(ref oFalse, ref missing, ref missing);

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/01/2009, 00h00
  2. Réponses: 1
    Dernier message: 07/05/2008, 11h31
  3. Réponses: 40
    Dernier message: 02/12/2007, 16h24
  4. afficher et ouvrir un document word ds une page jsp
    Par fdaval dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 13/02/2007, 08h48
  5. insertion document word dans une page
    Par maysa dans le forum Langage
    Réponses: 4
    Dernier message: 09/03/2006, 09h07

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