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

Java Discussion :

Copier le contenu d'un .docx pour l'ajouter dans un autre .docx


Sujet :

Java

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut Copier le contenu d'un .docx pour l'ajouter dans un autre .docx
    Bonsoir,
    je possède deux fichier word docx je veux copier le contenu du 1er fichier dans le 2eme en gardant le contenue du deuxième fichier bien sur.J'ai essayé ceci j'arrive à faire de la copie mais il supprime le contenue de mon 2eme fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     InputStream input = new FileInputStream("c:/worldpronos.docx");
                OutputStream output = new FileOutputStream("ahmed.docx");
                IOUtils.copy(input, output);
    J'ai besoin de votre aide s'il vous plait !

    Merci

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    heu ça va pas se faire comme ça, les format docx sont loin d'être simple à manipuler. Tu va devoir utiliser une librairie tierce capable de lire / écrire les docx et écire plein de code pour transférer tous les éléments du premier document dans le deuxième si la librairie ne fournis pas déjà cette fonctionnalité.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    heu ça va pas se faire comme ça, les format docx sont loin d'être simple à manipuler. Tu va devoir utiliser une librairie tierce capable de lire / écrire les docx et écire plein de code pour transférer tous les éléments du premier document dans le deuxième si la librairie ne fournis pas déjà cette fonctionnalité.
    oui totalement raison difficile de manipuler les docx c'est pour ça j'ai changé et j'ai utilisé maintenant le apache POI il me permet de gérer des document au fait j'ai réussi à extraire le contenu du 1er texte et l'afficher dans le 2eme mais j'ai affiché le texte sans formatage alors que j'ai vraiment besoin du style du texte

    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
    FileInputStream fis = new FileInputStream("c:/fichier1.docx"); 
                org.apache.poi.xwpf.extractor.XWPFWordExtractor oleTextExtractor = 
                new XWPFWordExtractor(new XWPFDocument(fis)); 
                System.out.print(oleTextExtractor.getText());       
     
                XWPFParagraph tmpParagraph = document.createParagraph(); 
                XWPFRun tmpRun = tmpParagraph.createRun(); 
                tmpRun.setText(oleTextExtractor.getText()); 
     
     
     
     
    			FileOutputStream file = new FileOutputStream("fichier2.docx");
    			document.write(file);
    			file.close();
    			System.out.println("success");
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    Est-ce-qu il y a une solution s'il vous plait à ça ? Merci

  4. #4
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Billets dans le blog
    1
    Par défaut
    Slt,
    Oublie tous cela, je pense que comme ça, ça devrait marcher pour n'importe quel type de fichier:
    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
    BufferedInputStream input = new BufferedInputStream (new FileInputStream (adr_fichier_en_entrée));
    BufferedOutputStream out  = new BufferedOutputStream (new FileOutputStream (adr_fichier_en_sortie));
    byte [] b = new byte [512 * 1024];
    int r;
                while ((r = input.read (b)) > -1)
                    out.write (b, 0, r);
    try {//try
                       input.close ();
                } catch (IOException ex) {
                           JOptionPane.showMessageDialog (null, ex);
                }
    out.flush ();
                       try {
                           out.close ();
                       } catch (IOException ex) {
                               JOptionPane.showMessageDialog (null, ex.getMessage ().toString (), "Message d'erreur", JOptionPane.ERROR_MESSAGE);
                       }
    Bon courage

  5. #5
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Billets dans le blog
    1
    Par défaut
    Ici, on va lire les données en provenance du fichier en lecture par bloc de 0.5Mo, et les copier dans le fichier en écriture tout en ignorant l’entête
    Que le contenu soit du xml, du .docx, un exe ou autre, il n'y a aucune différence
    Bon courage

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par mohamine1989 Voir le message
    Oublie tous cela, je pense que comme ça, ça devrait marcher pour n'importe quel type de fichier:
    Tu penses mal.

    Là tu lui expliques comment faire un copier/coller de fichier avec écrasement, comme dans l'explorateur de fichiers.
    La question c'est comment copier le contenu d'un document Word à la suite d'un autre document Word, et non pas à la place d'un autre document Word.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    exactement mohamine1989 : moi je cherche à copier le contenue d'un fichier 1 dans un fichier 2 tout en gardant l’entête du fichier 2 j'ai essayé votre solution et elle écrase totalement mon fichier 2 alors je veux qu'il reste moi

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par ahmedpa Voir le message
    mais j'ai affiché le texte sans formatage
    Comme le dit textextractor, ça extrait le texte....

    Tu va devoir aller bien plus profond en utilisant POI, pour récupérer dans le HXPFDocument les éléments, les images, les paragraphes, les styles, les pages, les entêtes, les tableaux et les transférer un à un vers l'autre objet de type HXPFDocument.

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    oui c’est pour ça j'ai demandé de l'aide car j'ai essayé et aucune solution pour le truc au fait j utilise les XWPF pas HWPF.
    J'ai vraiment besoin de vous les gars.je me bloque Merci !

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    au fait j'ai trouvé une autre solution qui consiste à utiliser le aspose for java mais il y a une contrainte que la durée pour la durée d’évaluation y a pas une aide s'il vous plait?

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ben oui, sortir de la période d'évaluation en achetant une licence -_-°.

    Il est possible que les développeurs de cette bibliothèque aient fait un effort considérable pour que leur bibliothèque expose des fonctions plus haut niveau, plus faciles d'emploi, et peut-être aussi plus fiables, que celles de POI.
    Pas étonnant qu'ils aient fait ça dans le but d'être payés.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    ouais bien sur sinon pour le POI en utilisant les XWPF il n y a pas une solution pour garder le style ? ou en code Java simple .J'ai essayé sans solution

  13. #13
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2011
    Messages : 181
    Billets dans le blog
    1
    Par défaut
    Je m’excuse pur cette intervenion mal placée, j'avais mal compris la question

  14. #14
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    pas grave sinon y a pas une solution ?

  15. #15
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par ahmedpa Voir le message
    ouais bien sur sinon pour le POI en utilisant les XWPF il n y a pas une solution pour garder le style ? ou en code Java simple .J'ai essayé sans solution
    Tu peux nous montrer ce que tu as essayé déjà?

    Si POI ne marche pas, il faut savoir qu'un docX, c'est en réalité un zip avec un série de xml dedans et les images sous formes png/jpeg etc. En dernier recours il dois pouvoir être possible de jouer avec XSLT pour fusionner les deux xml de contenu, mais a mon avis faut au moins compter 1 semaine de boulot pour arriver à un truc potable par là

  16. #16
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Tu peux nous montrer ce que tu as essayé déjà?

    Si POI ne marche pas, il faut savoir qu'un docX, c'est en réalité un zip avec un série de xml dedans et les images sous formes png/jpeg etc. En dernier recours il dois pouvoir être possible de jouer avec XSLT pour fusionner les deux xml de contenu, mais a mon avis faut au moins compter 1 semaine de boulot pour arriver à un truc potable par là
    Avec les XWPF du poi :
    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
     
    XWPFDocument document = new XWPFDocument();
    FileInputStream fis = new FileInputStream("c:/fichier1.docx");
    			XWPFDocument doc = new XWPFDocument(fis);
    			org.apache.poi.xwpf.extractor.XWPFWordExtractor oleTextExtractor = new XWPFWordExtractor(
    					doc);
     
     
    			XWPFParagraph tmpParagraph = document.createParagraph();
    			XWPFRun tmpRun = tmpParagraph.createRun();
    			tmpRun.setText(oleTextExtractor.getText());
    		    System.out.print(oleTextExtractor.getText());   
    FileOutputStream file = new FileOutputStream("fichier2.docx");
    			document.write(file);
    			file.close();
    			System.out.println("success");
    ici je fais la copie du contenu mais je perd le formattage du style du document

    sinon si avec la méthode de notre ami mohamed le fichier sera écraser

  17. #17
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ca c'est le premier code que tu nous a montré. Comme je te l'ai dit, tu dois parcourir les élément de ton document (différents getters disponibles sur XWPFDocument ) afin de transférer, au cas par cas, chaque élément (style, table, paragraphes) vers le nouveau document. Ca nécessite du travail et du code à faire

  18. #18
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Par défaut
    exactement j'ai essayé de faire ça mais aucune résultat le texte est toujours non formatté

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/09/2009, 14h23
  2. Réponses: 3
    Dernier message: 19/05/2009, 09h00
  3. Réponses: 2
    Dernier message: 22/03/2009, 21h06
  4. Réponses: 9
    Dernier message: 18/01/2009, 23h46
  5. Réponses: 8
    Dernier message: 25/01/2006, 20h32

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