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 :

Exporter vers Excel les caractères spéciaux


Sujet :

Documents Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    informatique
    Inscrit en
    Janvier 2018
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 55
    Points : 39
    Points
    39
    Par défaut Exporter vers Excel les caractères spéciaux
    Bonjour à tous,
    j'ai le code suivant qui doit me permettre d'exporter une jtabl vers Excel :
    code java:

    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
    public void exporter(JTable table, File file) {
            try {
                TableModel model = table.getModel();
                FileWriter out = new FileWriter(file);
     
                for (int i = 0; i < model.getColumnCount(); i++) {
                    out.write(model.getColumnName(i) + "\t");
     
                }
                out.write("\n");
     
                for (int i = 0; i < model.getRowCount(); i++) {
                    for (int j = 0; j < model.getColumnCount(); j++) {
     
                        //Object value = model.getValueAt(i, j) + "\t";
                        out.write(model.getValueAt(i,j).toString()+"\t");
     
     
     
                    }
                       // if (value != null) {
     
                         //   out.write(value.toString() + "\t");
     
                       // } else {
                           // out.write(" ");
     
                        //}
     
     
     
                     out.write("\n");
                }
                out.close();
     
     
     
                JOptionPane.showMessageDialog(this, "fichier générer");
     
            } catch (Exception err) {
                err.printStackTrace();
                JOptionPane.showMessageDialog(this, "nom de fichier existe déja!");
     
            }
    le action performed le button
    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
     JFileChooser chooser = new JFileChooser(File.listRoots()[0]); 
                //dans ce cas il faut mettre soit meme le nom du fichier ou le recup autrement 
                chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
                int ret = chooser.showSaveDialog(this); 
                if(ret == JFileChooser.APPROVE_OPTION){ 
                    //recuperation du fichier selectionné (tu peux aussi mettre un fichier qui n'existe pas) 
                    File f = chooser.getSelectedFile(); 
     
                    try { 
                       // FileWriter fw = new FileWriter(chooser.getSelectedFile()); 
                        File fichierselectionne = chooser.getSelectedFile();
                        String path = fichierselectionne.getAbsolutePath();
                       // fw.write(getArea().getText());//ecriture du texte 
                        //fw.flush(); 
                        //fw.close(); 
                        exporter(tableimprimer, new File(path+".xls"));
     
                    } catch (Exception ioe) { 
                        ioe.printStackTrace(); 
                    }
    Ce script fonctionne mais les accents ne s'affichent pas correctement
    svp vous avez une idée d'ou viens ce probleme

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    conflit sur l'encodage de caractères. Pour le coup c'est le genre de choses qu'il faut savoir supposer. Ni à Java, ni à Excel tu ne dis quel genre d'encodage utiliser pour les accents. Tu les laisses prendre eux-mêmes leur préférence.
    Il y avait peu de chances qu'ils tombent sur la même chose par hasard.

    Tu devrais t'entraîner avec Notepad++, comment faire des fichiers CSV avec des accents, en vérifiant que Excel sait les lire. Tu auras probablement besoin de jouer avec la fonction Encoding/Convert to.

    Une fois que tu as trouvé ce qui plaît à Excel, le but est de faire en Java le même genre de fichiers que tu faisais avec Notepad++, en précisant l'encodage de caractère.

    Il est plus que probable que l'encodage attendu par Excel sur une machine française, est nommé "Windows-1252". Pour utiliser ça, il faudra construire ton FileWriter comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileWriter out = new FileWriter(file, Charset.forName("windows-1252"));
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    informatique
    Inscrit en
    Janvier 2018
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 55
    Points : 39
    Points
    39
    Par défaut
    merci pour votre réponse

    je viens d'essayer la ligne de code ,mais ca ne fonctionne pas j'aurais ca Nom : Capture.PNG
Affichages : 785
Taille : 53,2 Ko
    et si je clique sur ajouter le try j'aurai ca Nom : Capture1.PNG
Affichages : 779
Taille : 49,7 Ko

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ah. Je viens de voir qu'il faut Java 11. Bon. Avant Java 11 tu ne peux pas utiliser FileWriter, il n'aura pas le bon encodage.

    A la place, quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try(Writer writer = Files.newBufferedWriter(file.toPath(), Charset.forName("windows-1252"))) {
     
      writer.write(model.getColumnName(i) + "\t");
      // et tout et tout
     
    }
    J'ai ajouté l'encapsulation dans un try-with-resource, pour que l'exemple soit bon. Quand on utilise des ressources libérables, comme les fichiers, il faut toujours le faire avec un try-with-resource.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    informatique
    Inscrit en
    Janvier 2018
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 55
    Points : 39
    Points
    39
    Par défaut
    s'il vous plait est ce que c'est possible d'ajuster la largeur des colonne de excel générer a partir de java?

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Pas avec du CSV.

    Là il va falloir tenter tant bien que mal de produire des fichiers xlsx, à l'aide d'Apache POI ou possiblement d'un concurrent.
    Oui, c'est compliqué. C'est Excel, c'est Microsoft Office. Quand on veut faire des choses simples et qui marchent on ne s'en approche pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    informatique
    Inscrit en
    Janvier 2018
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 55
    Points : 39
    Points
    39
    Par défaut
    ca veut dire dans ce cas je ne peux pas ajuster les colonnes automatiquement et je doit le faire manuellement ?
    et une autre question est ce que c la meme chose pour les bordures, et ajouter un titre ??

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Yup.

    Un CSV ça définit ce qu'il y a dans chaque colonne de chaque ligne. Rien d'autre.
    C'est un format plutôt technique que de présentation. Excel ne propose de l'ouvrir que pour l'afficher dans un tableur ce qui est plus agréable que dans un notepad.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [XL-2016] Rechercher remplacer dans Word via Excel : les caractères spéciaux
    Par Milkamelia dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/05/2016, 14h54
  2. [AC-2010] Exporter vers Excel les colonnes visibles d'un formulaires
    Par kesamba dans le forum IHM
    Réponses: 21
    Dernier message: 19/06/2014, 23h46
  3. [SP-2007] Habilitation sur les listes exportées vers Excel
    Par cpdump dans le forum SharePoint
    Réponses: 2
    Dernier message: 02/02/2010, 12h33
  4. [AC-2002] Export vers Excel : Cellules limitées à 50 caractères
    Par debie1108 dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/09/2009, 10h50
  5. Réponses: 2
    Dernier message: 04/08/2008, 11h13

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