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

Collection et Stream Java Discussion :

Créer un tableau dans un fichier texte


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Homme Profil pro
    Alternance
    Inscrit en
    février 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : février 2019
    Messages : 51
    Points : 40
    Points
    40
    Par défaut Créer un tableau dans un fichier texte
    Bonjour à tous,

    Je suis entrain de développer une application pour mon lycée et je rencontre un problème pour la création de mon fichier. Je précise que je ne suis pas un pro du tout et que je commence le java depuis quelques temps. Je voudrais créer une forme de tableau dans mon fichier mais je ne sais absolument pas comment faire... J'arrive à écrire dans mon fichier ce n'est pas le problème mais je n'arrive pas à aligner en séparent par des " | ".

    Voici ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CLASS. CLASSE	 | 	VOILIER		 | 	NOM SKIPPER	 | 	RATTING		 | 	TPS REEL	 | 	TPS COMPOSEE	 | 	CLASS. GENERAL
    1	 | 	SaturneV1	 | 	X	 | 	1	 | 	00:01:25	 | 	1140973	 | 	1
    2	 | 	Saturne	 | 	XXXXXX	 | 	1	 | 	00:02:23	 | 	1141031	 | 	2
    3	 | 	SaturneV3	 | 	XXXX	 | 	1	 | 	00:03:11	 | 	1141079	 | 	3
    4	 | 	SaturneGD	 | 	XXXXXXXXXXXXXX	 | 	1	 | 	00:04:31	 | 	1141159	 | 	4
    5	 | 	Sat	 | 	X	 | 	1	 | 	00:05:36	 | 	1141224	 | 	5
    6	 | 	SaturneXXXXXX	 | 	XXXX	 | 	1	 | 	00:06:45	 | 	1141293	 | 	6
    Mais j'aimerais avoir quelque chose dans ce style :
    Nom : Capture d’écran 2019-12-17 à 09.43.00.png
Affichages : 139
Taille : 66,7 Ko

    Voici le code que j'ai fait qui est banal :
    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
     
    File fichier = fc.getSelectedFile();
    String chemin = fichier.getAbsolutePath();
    fichier.createNewFile();
    fc.setSelectedFile(new File("Regate_" + r.getNum() + "_Classe2.txt"));
    PrintWriter f2 = new PrintWriter(fichier);
    f2.println("Regate : " + r.getNum());
    f2.println("Nombre de participants : " + classe1.size());
    f2.println("Distance : " + r.getDistance() + " Milles | Environ : " + distanceKm + " en Kilometre(s)");
    f2.println("___________________________________________________________________________________________");
    f2.println("\n");
    f2.println(COLONNE7.toUpperCase() + "\t | \t" + COLONNE2.toUpperCase() + "\t\t | \t" + COLONNE3.toUpperCase() + "\t | \t" + COLONNE4.toUpperCase() + "\t\t | \t" + COLONNE5.toUpperCase() + "\t | \t" + COLONNE6.toUpperCase() + "\t | \t" + COLONNE8.toUpperCase());
    for(Voilier v : classe2) {
    	f2.println(this.getPlace(v) + "\t | \t" + v.getNom() + "\t | \t" + v.skipper.getNom() + "\t | \t" + v.getRating() + "\t | \t" + v.getTempsHMS() + "\t | \t" + v.getTempsCompense() + "\t | \t" + r.getPlaceDansClassementGeneral(v));
    }
    f2.close();
    Je vous remercie d'avance et bonne journée.

    WiZarD

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 400
    Points : 29 015
    Points
    29 015
    Billets dans le blog
    2
    Par défaut
    Salut,

    La question est de savoir pourquoi tu veux faire de la présentation dans un fichier. S'il s'agit de stocker des données, de façon tabulaire, par exemple pour pouvoir être importée dans Excel, ou d'autres façons du même genre (fichier CSV par exemple), il suffit de séparer chaque valeur par un caractère désigné (tabulation donc \t pour fichier tabulaire, virgule donc , pour CSV, etc). Mais le fichier ouvert dans un éditeur de texte n'apparaîtra pas forcément de manière à ressembler à un tableau. Ce n'est pas le but.
    S'il s'agit de présenter un tableau, avec des colonnes alignées tout ça, normalement on utilise un format dédié, comme HTML par exemple (qu'on peut produire en Java). Le fichier n'est plus vraiment un fichier de données, mais la présentation est vraiment un tableau. On peut utiliser XML et XSLT pour avoir un fichier de données, et un fichier de présentation, et comme c'est pris en charge par la plupart des navigateurs, ça fonctionne assez bien. Et on peut produire les fichiers en Java.

    On peut aussi s'arranger pour qu'un fichier texte est l'allure d'un tableau, en écrivant dedans ce qu'il faut. Tu ne peux pas utiliser des tabulations pour ça : ce n'est pas fait pour aligner, l'affichage dépend complètement de l'interprétation du système d'affichage (le logiciel qui va être utilisé pour l'affichage), et si le système d'affichage utilise des polices proportionnelles, c'est quasiment impossible, ca il faudrait connaître l'algorithme de composition du sytème d'affichage. Si on part du principe qu'on affichera des polices non proportionnelles, ou tous les caractères ont la même largeur donc, il faudra ajouter suffisamment d'espaces pour alignées les colonnes de données.

    Il se trouve que pour répondre à une autre question j'ai rapidement fait une méthode d'affichage qui te montrera comment on peut facilement afficher en console un tableau et que tu peux très facilement utiliser pour générer un fichier (avec un PrintStream, ou PrintWriter, vers un fichier à la place de System.out).

    Le principe est premièrement de déterminer la largeur des colonnes, en calculant pour chaque colonne, la taille de la plus grande valeur. Puis lors de la concaténation des valeurs, d'ajouter le nombre suffisant d'espaces (à droite pour un alignement à gauche, à gauche pour un alignement à droite, et des deux côtés pour un alignement centré.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre du Club
    Homme Profil pro
    Alternance
    Inscrit en
    février 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : février 2019
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Merci joel.drigo pour ta réponse,

    Je vais expliquer plus licitement ce que je voudrais faire. En résumé j'exporte mon fichier .txt pour l'instant ( à voir si comme tu me la dit avec les fichiers Excel, CSV ou XML ) mais le but étant que j'exporte un fichier sous forme de tableau (qui ne fonctionne pas pour l'instant) pour ensuite l'imprimer et l'afficher à la fin de ma course. Ce fichier contient le classement de ma course, pour que cela soit plus lisible je me suis dit que dans un fichier texte, je pourrais écrire un programme qui me génère le classement sous forme de tableau.

    Je vais regarder le lien que tu ma donné pour voir si cela fonctionne.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 400
    Points : 29 015
    Points
    29 015
    Billets dans le blog
    2
    Par défaut
    Est-il vraiment nécessaire de créer un fichier pour l'afficher ou l'imprimer ensuite ? Ne peut-on pas envisager d'afficher ou imprimer directement dans l'application Java, et, éventuelle, de produire juste un fichier de données, sans présentation donc.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre du Club
    Homme Profil pro
    Alternance
    Inscrit en
    février 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : février 2019
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Oui puisque il n'y a pas forcement d'imprimante à disposition quand la course est effectué. L'affichage dans l'application n'était pas prévue, mais ce n'est pas préférable puisque si le client veut partager le classement. C'est pour cela que je pensais au fichier... je vais regarder avec les fichiers Excel ou CSV si je trouve mon bonheur

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 400
    Points : 29 015
    Points
    29 015
    Billets dans le blog
    2
    Par défaut
    Il y a le PDF aussi. C'est bien le PDF. C'est peut-être un peu plus compliqué à produire, mais au moins ce n'est pas modifiable, et on peut l'imprimer, l'envoyer par mail, etc.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre du Club
    Homme Profil pro
    Alternance
    Inscrit en
    février 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : février 2019
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Je pensais que ce n'était pas possible. Mais alors comment faire pour écrire sur un PDF? Il faut utiliser Java EE ?

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 400
    Points : 29 015
    Points
    29 015
    Billets dans le blog
    2
    Par défaut
    Il y a au moins deux bibliothèques très connues :

    1. Apache Commons PDFBOX
    2. iText


    Un exemple iText :

    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
     
     
    List<Voilier> voiliers = ...
     
    String file = directoryPath + "output.pdf"; 
     
    try(PdfDocument pdfDoc = new PdfDocument(new PdfWriter(file))) {
     
          Document doc = new Document(pdfDoc);        
     
          Table table = new Table(7);   // 7 colonnes  
     
          for(Voilier voilier : voiliers) {
              table.addCell(new Cell().add( String.valueOf( this.getPlace( voilier ) ) ));
              table.addCell(new Cell().add( String.valueOf( voilier.getNom() ) ));
              // ... etc ...
          } 
     
           doc.add(table); 
     
    }
    Simple, non ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre du Club
    Homme Profil pro
    Alternance
    Inscrit en
    février 2019
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : février 2019
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Bonsoir,

    J'ai trouvé la solution avec les PDF, j'ai téléchargé la library iText 5.4.0 je n'arrive pas à trouver celle de la version 7 est-elle payante ? J'ai téléchargé la version iText7-core mais je n'ai pas trouvé le fichier à ouvrir pour les pdf est-ce normal?

    Merci beaucoup en tout cas problème résolu.

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    septembre 2009
    Messages
    12 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 12 400
    Points : 29 015
    Points
    29 015
    Billets dans le blog
    2
    Par défaut
    Pour les conditions d'utilisation de IText7, regarde ici.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [Débutant] Créer un tableau dans un fichier texte depuis un fichier xml
    Par juinfo dans le forum C#
    Réponses: 1
    Dernier message: 05/10/2016, 17h33
  2. [VB.net] créer puis écrire dans un fichier Texte
    Par hunteshiva dans le forum VB.NET
    Réponses: 9
    Dernier message: 27/01/2016, 22h58
  3. [uitable] Ecrire les valeurs du tableau dans un fichier texte
    Par soumer dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 20/08/2011, 14h41
  4. extraire données d'un tableau dans un fichier texte
    Par cre31400 dans le forum MATLAB
    Réponses: 4
    Dernier message: 29/07/2009, 15h51
  5. enregistrer un tableau dans un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2006, 14h10

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