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 :

Création d'un fichier Excel et ajout d'informations.


Sujet :

Documents Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Création d'un fichier Excel et ajout d'informations.
    Bonjour (oui c'est encore moi).

    Exercice du jour : Créer un programme qui génère le fichier texte de l'exercice, pour un tableur, sans utiliser de boucle.

    En gros, ça doit me créer ceci (c'est l'image de l'exercice) :
    Nom : excel.png
Affichages : 192
Taille : 2,1 Ko

    Sans trop de mal, mais si c'est simpliste :
    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
    package exercicefiletableur;
     
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
     
    public class Exercice3Tableur {
     
    	//Créer un programme qui génère le fichier texte de l'exercice, pour un tableur, sans utiliser de boucle.//
     
    	public static void main (String Args[]) throws IOException{
     
     
    		File fichier = new File("D:\\"+"tableur1"+".xls");
    		PrintWriter pw = new PrintWriter(new FileWriter(fichier)) ;
     
    		pw.append("1\t 2\t 3\t");
    		pw.println();
    		pw.append("4\t 5\t 6\t");
    		pw.println();
    		pw.append("7\t 8\t 9\t");
     
    		pw.close();
     
    	}
     
    }
    Il fonctionne très bien, même si je me doute qu'il y a une façon plus "intelligente" de le faire...
    Parce qu'on m'a demandé de faire le même exercice, mais en utilisant un boucle et en me disant que les nombres ne doivent pas aller de 1 à 9 cette fois-ci, mais de 1 à 1523 u.u
    Donc l'astuce du "1\t 2\t 3\t etc" ne fonctionne pas.

    J'ai bien identifié les problèmes de l'exercice : faire en sorte que le programme me crée mon fichier Excel et m'affiche les nombres de 1 à 1523 en trois colonnes.
    Comme dans l'exercice pour l'écriture et manipulation dans un fichier txt, je sais que je dois réutiliser l'exercice précédent. Mais celui-ci étant mauvais de base...

    J'aimerais donc savoir s'il existe un moyen d'utiliser .append avec une variable telle que et pouvoir y incrémenter à chaque fois n.
    J'ai essayé d'utiliser un StringBuffer pour utiliser une autre variable qui prendrait la valeur de n sur chaque ligne tel que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    k = newStringBuffer().append("n").append("n").append("n")
    (à défaut de pouvoir utiliser les tabulations \t).

    Ou bien s'il existe un moyen de faire comprendre, avec les tabulations et les valeurs incrémentés, que les nombres doivent rester sur trois colonnes... ?

    Merci par avance !

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2013
    Messages : 191
    Points : 458
    Points
    458
    Par défaut
    Ecrire n et écrire "n", ça n'a pas la même signification.
    Dans le premier cas, tu parles de la variable n, dans le second cas tu utilise une chaine de caractère qui vaut "n".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int n = 0;
    System.out.println("test : "+n); //va t'afficher "test : 0"
    System.out.println("test : "+"n"); //va t'afficher "test : n"
    Tu peux donc construire ta chaine dynamiquement avec des variables.
    Le StringBuffer, c'est pour l'optimisation. Je te conseil déjà de faire un programme sans optimisation avec simplement des concaténations de chaine pour des valeurs allant de 1 à 9 avec une boucle.

    Ensuite tu pourras utiliser un StringBuffer, même si je pense que le plus adéquat dans ton exercice, c'est d'utiliser directement pw.print().
    Puis pw.println() pour passer a la ligne.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Au passage, pour passer de 9 à n'importe quel autre nombre, la méthode n'est pas bien compliqué pour savoir où tu dois aller.

    Tu prends ton nombre modulo 3.

    Si c'est zéro tu es dans la première colonne, si c'est 1 la seconde et si c'est 2 la troisième.

    Puis, si tu divises ton n par 3 tu devrais avoir le numéro de ligne courante (avec 0 le numéro de la première ligne)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Oui, c'est l'idée sur laquelle je suis parti au final, en tenant compte de ce qui a été dit plus haut quand même (j'suis tellement pas suivi de ce cursus que c'est un collègue qui a fait de la prog' qui a eu pitié de moi et est venu m'aider haha).

    Je termine demain et je poste ici si jamais j'ai réussi (ou si j'ai un autre souci ..)

  5. #5
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2014
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 262
    Points : 634
    Points
    634
    Par défaut
    Citation Envoyé par Shidate Kunan Voir le message
    Bonjour (oui c'est encore moi).
    [/CODE]
    Il fonctionne très bien, même si je me doute qu'il y a une façon plus "intelligente" de le faire...
    Parce qu'on m'a demandé de faire le même exercice, mais en utilisant un boucle et en me disant que les nombres ne doivent pas aller de 1 à 9 cette fois-ci, mais de 1 à 1523 u.u
    Donc l'astuce du "1\t 2\t 3\t etc" ne fonctionne pas.

    J'ai bien identifié les problèmes de l'exercice : faire en sorte que le programme me crée mon fichier Excel et m'affiche les nombres de 1 à 1523 en trois colonnes.
    Comme dans l'exercice pour l'écriture et manipulation dans un fichier txt, je sais que je dois réutiliser l'exercice précédent. Mais celui-ci étant mauvais de base...
    /CODE] (à défaut de pouvoir utiliser les tabulations \t).

    Ou bien s'il existe un moyen de faire comprendre, avec les tabulations et les valeurs incrémentés, que les nombres doivent rester sur trois colonnes... ?
    Si , si il existe un moyen mon chère Shidate !

    Etant donné que c'est sur trois colonnes, cela veut dire que c'est à chaque fois que ton entier est multiple de trois que tu dois repartir à la ligne.N'est pas génial ?
    Il te suffit simplement de parcourir dans une boucle les entiers allant de 1 à n et sil'entier est multiple de trois de trois tu reviens à la ligne, sinon tu écrit une tabulation et le
    nombre courant. Voici ce que je te propose-même si c'est pas très pédagogique de mon point de vue :
    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
     
    public class Tableur{
     
        public static void main(String[] args) throws FileNotFoundException {
            final int N = 1523;
            PrintWriter printWriter = new PrintWriter("fichier.txt");
     
            for (int i = 1; i < N; i++) {
                if (i % 3 == 0) {
                    printWriter.println("" + i);
                }
                else printWriter.print(i+"\t");
            }
            printWriter.flush();
            printWriter.close();
        }
    }
    Aujourd'hui apprenant, demain appreneur.
    N'accuse pas le puits d'être trop profond,
    c'est peut-être ta corde qui est trop courte

Discussions similaires

  1. Création d'un fichier Excell
    Par Lalanne dans le forum C++
    Réponses: 2
    Dernier message: 03/06/2008, 12h55
  2. Réponses: 3
    Dernier message: 01/08/2007, 10h35
  3. C# Création d'un fichier excel 2003 et 2007
    Par todier dans le forum C#
    Réponses: 1
    Dernier message: 18/06/2007, 10h21
  4. création d'un fichier excel avec ADO
    Par sony351 dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/02/2007, 15h54
  5. [POI] Création d'un fichier excel
    Par Shixz dans le forum Documents
    Réponses: 1
    Dernier message: 12/07/2006, 11h45

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