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

Documents Java Discussion :

Apache POI - HWPF création de document word basé sur template


Sujet :

Documents Java

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut Apache POI - HWPF création de document word basé sur template
    Hello,

    Je recherche tout type de documents concernant la manipulation de document word avec Apache POI - HWPF mon but est de traiter un fichier basé sur un template et d'y remplacer des valeurs ou des champs définis

    d'avance je vous remercie

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    A première vue aucune doc n'existe sur le sujet et le projet n'est pas mature que pensez-vous de open office api ?

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    et que pensez de WordProcessingML http://blogs.msdn.com/dotnetinterop/...d-ms-word.aspx ?

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En ce qui concerne la production de document Word tu ne trouveras rien de correct en libre...

    Puis pour les solutions XML de microsoft, elles ne concernent qu'un petit subset de versions d'office (2007 a la sienne, 2003 la sienne et elles sont incompatibles)....

    Sinon tu peux faire du RTF avec des choses comme RTFTemplate.

    Ou sinon tu as OpenDocument qui est supporté par OOO et sera supporté dans les prochaines release d'office, et qui est un standard iso (mais bon le temps de faire comprendre ça a une boite...). De plus OpenOffice propose une API Java pour l'OpenDocument. Et puis il existe des API java pour la conversion entre les différents formats: http://www.artofsolving.com/opensource/jodconverter
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  5. #5
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 057
    Points : 1 532
    Points
    1 532
    Par défaut Bonjour
    Bonjour,

    Je suis en train de travailler sur le sujet , j'ai explorer pas mal de possibilités.
    En fait l'api d'open Office te permet de faire ce que tu recherches, je viens de créer mon premier docuemnt grâce au SDK open office.


    Inconvénient : doc in english and not very simple for an new user ...
    Avantage : T'as pas de limite sinon le temps d'apprentissage,

    Je suis en train d'essayer de coder un modèle et cela fonctionne en java.

    Word = crosoft donc proprio donc not open
    Open document

    olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    j ai discuté avec mon chef de projet, il m'a dit que pour que XXXX passe au solution open office il faudrait du temps ... voir jamais ils sont très attachés au standards microsoft

    j ai fait une function de proof of concept pour WordML et miracle ca fonctionne très bien pour un template généré avec office 2003 et le document généré s ouvre très bien avec 2007


    et c'est d'une simplicité enfantine

    voici le code (pas beau)

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    package com.test;
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintStream;
     
     
    public class WordML {
     
    	public static void createPermisDeConstruireDocument() {
    		File file =	new File("C:\\fiche_1.xml");
    		FileInputStream fis = null;
    		BufferedInputStream bis =null;
    		DataInputStream dis = null;
    		FileOutputStream out;
    		// declare a file output object
    		PrintStream p;
    		// declare a print stream object
    		try {
    			String commune = "Fribourg";
    			String mimeEncoding ="8859_1";
    			String fileName ="123123";
    			out =new FileOutputStream("C:\\" + fileName + ".xml");
    			OutputStreamWriter outW = new OutputStreamWriter(out, mimeEncoding);
    			// Connect print stream to the output stream
    			p =	new PrintStream( out );
    			fis = new FileInputStream(file);
    			// Here BufferedInputStream is added for fast reading.
    			bis = new BufferedInputStream(fis);
    			dis = new DataInputStream(bis);
    			while (dis.available() != 0) {
    				String line = dis.readLine();
    				//line = XmlEncode(line);
    				line = line.replace("$commune", commune);
    				outW.write(line);
    				System.out.println(line);
    				System.out.println("\n");
    			}
    			outW.flush();
    			outW.close();
    			p.close();
    		}
    		catch (Exception ex) {
    			System.out.println("Exception : " + ex.getMessage());
    		}
    		finally {
    			try{
    				fis.close();
    				dis.close();
    			}
    		catch (Exception ex) {
    			System.out.println("Exception : " + ex.getMessage());
    		}
     
    	}		
    }
    	public static void main (String [] args) {
    		WordML.createPermisDeConstruireDocument();
    	}
    }

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 57
    Points : 138
    Points
    138
    Par défaut Microsoft, un standard, on aura tout vu...
    Bonjour Alexandre,

    Je me permet de te citer :
    Citation Envoyé par *alexandre* Voir le message
    j ai discuté avec mon chef de projet, il m'a dit que pour que l'état passe au solution open office il faudrait du temps ... voir jamais ils sont très attachés au standards microsoft
    Tu pourras dire à ton chef de projet et à tes clients que Microsoft n'est pas un standard, c'est une entreprise multinationale qui n'a qu'un seul et unique intérêt : faire du profit sur le dos de ses clients.

    A ton chef de projet de voir s'il veut que tes développements (qui coûtent cher) ne soient plus valable dans 2 ou 3 ans, car M$ aura d'ici-là sorti encore une nouvelle version de ses produits... et faire dépendre son projet du degré d'avarice d'une firme, c'est assez... comment dire... dangereux, non.

    A ta décharge, je pense que le mot formats était vraiment le mot le plus juste dans ce contexte.


    Quant à ta classe, elle ne fait qu'écrire des données prise dans un fichier xml vers un autre fichier xml...
    La pertinence de la manipulation serait au moins d'enregistrer le dit document avec l'extension consacrée (.doc) et d'y mettre le contenu de ton template word (avec les subsitutions/insertions aux bons emplacements).

    Ceux qui ne sont pas habitués à Java (ou Perl ou Python ou PHP et autres langages libres) ne sont pas très familiers de ce que le mot liberté signifie en développement. Mais il est vrai que ta méthode est bien la bonne, il suffit d'utiliser les classes de base de gestion des flux en java pour y arriver tranquillement.

    Bien cordialement.

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Tu as tout à fait raison c'était bien de format ce dont je parlais je vais étendre mon petit proof of concept à d'autres utilisation

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Analyste cogniticien
    Inscrit en
    Décembre 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Analyste cogniticien
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2004
    Messages : 7
    Points : 9
    Points
    9
    Par défaut prise en charge caractères accentués
    Citation Envoyé par *alexandre* Voir le message
    j ai discuté avec mon chef de projet, il m'a dit que pour que XXXX passe au solution open office il faudrait du temps ... voir jamais ils sont très attachés au standards microsoft

    j ai fait une function de proof of concept pour WordML et miracle ca fonctionne très bien pour un template généré avec office 2003 et le document généré s ouvre très bien avec 2007


    et c'est d'une simplicité enfantine

    voici le code (pas beau)

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    package com.test;
    import java.io.BufferedInputStream;
    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintStream;
     
     
    public class WordML {
     
    	public static void createPermisDeConstruireDocument() {
    		File file =	new File("C:\\fiche_1.xml");
    		FileInputStream fis = null;
    		BufferedInputStream bis =null;
    		DataInputStream dis = null;
    		FileOutputStream out;
    		// declare a file output object
    		PrintStream p;
    		// declare a print stream object
    		try {
    			String commune = "Fribourg";
    			String mimeEncoding ="8859_1";
    			String fileName ="123123";
    			out =new FileOutputStream("C:\\" + fileName + ".xml");
    			OutputStreamWriter outW = new OutputStreamWriter(out, mimeEncoding);
    			// Connect print stream to the output stream
    			p =	new PrintStream( out );
    			fis = new FileInputStream(file);
    			// Here BufferedInputStream is added for fast reading.
    			bis = new BufferedInputStream(fis);
    			dis = new DataInputStream(bis);
    			while (dis.available() != 0) {
    				String line = dis.readLine();
    				//line = XmlEncode(line);
    				line = line.replace("$commune", commune);
    				outW.write(line);
    				System.out.println(line);
    				System.out.println("\n");
    			}
    			outW.flush();
    			outW.close();
    			p.close();
    		}
    		catch (Exception ex) {
    			System.out.println("Exception : " + ex.getMessage());
    		}
    		finally {
    			try{
    				fis.close();
    				dis.close();
    			}
    		catch (Exception ex) {
    			System.out.println("Exception : " + ex.getMessage());
    		}
     
    	}		
    }
    	public static void main (String [] args) {
    		WordML.createPermisDeConstruireDocument();
    	}
    }
    super ta combine. J'ai juste un pb avec la gestion des caractères accentués. une idée ?

    merci

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

Discussions similaires

  1. [POI] Manipulation de document word à partir une template
    Par choixged dans le forum Documents
    Réponses: 2
    Dernier message: 02/01/2013, 16h34
  2. Réponses: 1
    Dernier message: 03/04/2011, 19h30
  3. Réponses: 1
    Dernier message: 07/10/2010, 10h01
  4. Réponses: 0
    Dernier message: 27/10/2008, 15h58
  5. Création de documents word
    Par antiseche dans le forum C++
    Réponses: 3
    Dernier message: 23/06/2006, 16h34

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