Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DÉMONSTRATION DU PACKAGE JXL


Information sur la source

Catégorie :Api Niveau : Débutant Date de création : 17/09/2004 Date de mise à jour : 20/09/2004 11:35:42 Vu / téléchargé: 24 286 / 2 058

Note :
Aucune note

Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Ceci est un tout petit programme qui montre comment utiliser le package jxl.
Ce package sert à manipuler des fichiers Excel (version 2000 au maximum). On y voit comment lire et créer un fichier Excel (un fichier de démonstration est à l'intérieure).

NOTE IMPORTANTE : ce package est sous licence GNU (Gnuw's Not Unix). Autrement dit, ce package est gratuit, mais si on l'incorpore dans un programme qui est commercialisé ou pas, nous devons fournir non seulement le code source du package, mais de tout le programme également !!!!

Pour plus de renseignement : http://www.andykhan.com/jexcelapi/

PS : pour que le programme fonctionne, il faut télécharger le package grâce au lien ci-dessus, créer un répertoire jexcelapi, le placer à l'intérieure et placer le répertoire au même niveau que le fichier excel.jar (le manifest qui se trouve à l'intérieure va chercher le package dans le répertoire courant)
 

Source

  • package excel;
  • /**
  • * <p>Titre : Excel</p>
  • * <p>Description : Classe permettant de tester le package jxl</p>
  • * <p>Copyright : Copyright (c) 2004</p>
  • * <p>Société : BakaOne</p>
  • * @author Indiana_jules
  • * @version 1.0
  • */
  • //Importation des packages nécessaires
  • import java.awt.BorderLayout;
  • import java.awt.event.ActionEvent;
  • import java.awt.event.ActionListener;
  • import java.io.File;
  • import java.util.Vector;
  • import javax.swing.JButton;
  • import javax.swing.JOptionPane;
  • import javax.swing.JPanel;
  • import javax.swing.JScrollPane;
  • import jxl.Sheet;
  • import jxl.Workbook;
  • import jxl.write.Label;
  • import jxl.write.WritableSheet;
  • import jxl.write.WritableWorkbook;
  • public class Excel extends JPanel{
  • //Variables globales
  • private MyTable table;
  • //Constantes
  • /**Permet d'indiquer si on ouvre un fichier excel*/
  • public static final int OPEN = 1;
  • /**Permet d'indiquer si on enregistre un fichier excel*/
  • public static final int SAVE = 2;
  • /**Constructeur par défaut*/
  • public Excel() {
  • super(new BorderLayout());
  • }
  • /**Constructeur
  • * @param typeOp Permet d'indiquer si on veut voir un exemple d'enregistrement
  • * ou un exemple de sauvegarde de fichier excel*/
  • public Excel(int typeOp) {
  • super(new BorderLayout());
  • jbinit(typeOp);
  • }
  • /**Méthode permettant d'initialiser la classe
  • * @param typeOp Permet d'indiquer si on veut voir un exemple d'enregistrement
  • * ou un exemple de sauvegarde de fichier excel*/
  • protected void jbinit(int typeOp) {
  • //Variables nécessaire
  • JButton bouton;
  • if(typeOp == this.OPEN){ //Nous allons ouvrir un fichier excel
  • table = new MyTable(new Vector());
  • bouton = new JButton("Ouvrir un fichier excel");
  • bouton.addActionListener(new ActionListener() {
  • public void actionPerformed(ActionEvent e) {
  • JMyFileChooser choose = new JMyFileChooser(JMyFileChooser.OPEN_DIALOG);
  • int valeur = choose.showOpenDialog(null);
  • if(valeur == JMyFileChooser.APPROVE_OPTION){
  • /*Nous allons vérifier que le fichier se termine bien par
  • l'extension xls*/
  • String filename = choose.getSelectedFile().getAbsolutePath();
  • if(!filename.endsWith(".xls")){
  • filename = filename + ".xls";
  • }
  • //Nous allons récupérer les données du fichier xls
  • Vector data = new Vector();
  • try{
  • //1ére étape : nous créeons le Workbook
  • Workbook workbook = Workbook.getWorkbook(new File(filename));
  • //2nd étape : nous allons récupérons les données de la 1ére page du classeur
  • Sheet sheet = workbook.getSheet(0);
  • //3éme étape : nous lisons les cellules et nous les disposons dans la table
  • Vector tempo;
  • for(int i = 0; i < sheet.getRows(); i++){
  • tempo = new Vector();
  • for(int j = 0; j < sheet.getColumns(); j++){
  • tempo.add(sheet.getCell(j, i).getContents());
  • }
  • data.add(tempo);
  • }
  • table.setData(data);
  • table.refreshAll();
  • //4éme étape : fermeture du flux
  • workbook.close();
  • }
  • catch(Exception ex) {
  • JOptionPane.showMessageDialog(null, "Impossible d'ouvrir le fichier xls", "Erreur", JOptionPane.ERROR_MESSAGE);
  • }
  • }
  • }
  • });
  • }
  • else{ //Nous allons sauver dans un fichier excel
  • //Nous allons créer un data
  • Vector v = new Vector();
  • Vector a = new Vector();
  • a.add("1");
  • a.add("2");
  • a.add("3");
  • a.add("4");
  • Vector b = new Vector();
  • b.add("5");
  • b.add("6");
  • b.add("7");
  • b.add("8");
  • Vector c = new Vector();
  • c.add("9");
  • c.add("10");
  • c.add("11");
  • c.add("12");
  • Vector d = new Vector();
  • d.add("13");
  • d.add("14");
  • d.add("15");
  • d.add("16");
  • v.add(a);
  • v.add(b);
  • v.add(c);
  • v.add(d);
  • table = new MyTable(v);
  • bouton = new JButton("Sauver dans un fichier excel");
  • bouton.addActionListener(new ActionListener() {
  • public void actionPerformed(ActionEvent e) {
  • JMyFileChooser choose = new JMyFileChooser(JMyFileChooser.SAVE_DIALOG);
  • int valeur = choose.showSaveDialog(null);
  • if(valeur == JMyFileChooser.APPROVE_OPTION){
  • //Nous récupérons les données
  • Vector data = table.getData();
  • /*Nous allons vérifier que le fichier se termine bien par
  • l'extension xls*/
  • String filename = choose.getSelectedFile().getAbsolutePath();
  • if(!filename.endsWith(".xls")){
  • filename = filename + ".xls";
  • }
  • //Nous allons créer le fichier xls
  • try{
  • //1ére étape : création du WritableWorkbook
  • WritableWorkbook workbook = Workbook.createWorkbook(new File(
  • filename));
  • //2nd étape : création de la 1ére page du classeur xls
  • WritableSheet sheet = workbook.createSheet("First sheet", 0);
  • //3éme étape : insérer les informations de la table dans le classeur
  • Label label;
  • Vector tempo;
  • for(int i = 0; i < data.size(); i++){
  • tempo = (Vector)data.get(i);
  • for(int j = 0; j < tempo.size(); j++){
  • label = new Label(j, i, tempo.get(j).toString());
  • sheet.addCell(label);
  • }
  • }
  • /*4éme étape : aprés avoir insérer les cellules, nous créeons le fichier
  • et nous fermons le flux*/
  • workbook.write();
  • workbook.close();
  • }
  • catch(Exception ex) {
  • JOptionPane.showMessageDialog(null, "Impossible de créer le fichier xls", "Erreur", JOptionPane.ERROR_MESSAGE);
  • }
  • }
  • }
  • });
  • }
  • this.add("Center", new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));
  • this.add("South", bouton);
  • }
  • }
package excel;

/**
 * <p>Titre : Excel</p>
 * <p>Description : Classe permettant de tester le package jxl</p>
 * <p>Copyright : Copyright (c) 2004</p>
 * <p>Société : BakaOne</p>
 * @author Indiana_jules
 * @version 1.0
 */

//Importation des packages nécessaires
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class Excel extends JPanel{
  //Variables globales
  private MyTable table;

  //Constantes
  /**Permet d'indiquer si on ouvre un fichier excel*/
  public static final int OPEN = 1;
  /**Permet d'indiquer si on enregistre un fichier excel*/
  public static final int SAVE = 2;

  /**Constructeur par défaut*/
  public Excel() {
    super(new BorderLayout());
  }

  /**Constructeur
   * @param typeOp Permet d'indiquer si on veut voir un exemple d'enregistrement
   * ou un exemple de sauvegarde de fichier excel*/
  public Excel(int typeOp) {
    super(new BorderLayout());
    jbinit(typeOp);
  }

  /**Méthode permettant d'initialiser la classe
   * @param typeOp Permet d'indiquer si on veut voir un exemple d'enregistrement
   * ou un exemple de sauvegarde de fichier excel*/
  protected void jbinit(int typeOp) {
    //Variables nécessaire
    JButton bouton;

    if(typeOp == this.OPEN){ //Nous allons ouvrir un fichier excel
      table = new MyTable(new Vector());

      bouton = new JButton("Ouvrir un fichier excel");
      bouton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          JMyFileChooser choose = new JMyFileChooser(JMyFileChooser.OPEN_DIALOG);
          int valeur = choose.showOpenDialog(null);

          if(valeur == JMyFileChooser.APPROVE_OPTION){
            /*Nous allons vérifier que le fichier se termine bien par
            l'extension xls*/
            String filename = choose.getSelectedFile().getAbsolutePath();

            if(!filename.endsWith(".xls")){
              filename = filename + ".xls";
            }

            //Nous allons récupérer les données du fichier xls
            Vector data = new Vector();
            try{
              //1ére étape : nous créeons le Workbook
              Workbook workbook = Workbook.getWorkbook(new File(filename));

              //2nd étape : nous allons récupérons les données de la 1ére page du classeur
              Sheet sheet = workbook.getSheet(0);

              //3éme étape : nous lisons les cellules et nous les disposons dans la table
              Vector tempo;
              for(int i = 0; i < sheet.getRows(); i++){
                tempo = new Vector();
                for(int j = 0; j < sheet.getColumns(); j++){
                  tempo.add(sheet.getCell(j, i).getContents());
                }

                data.add(tempo);
              }

              table.setData(data);
              table.refreshAll();

              //4éme étape : fermeture du flux
              workbook.close();
            }
            catch(Exception ex) {
              JOptionPane.showMessageDialog(null, "Impossible d'ouvrir le fichier xls", "Erreur", JOptionPane.ERROR_MESSAGE);
            }
          }
        }
      });
    }
    else{ //Nous allons sauver dans un fichier excel
      //Nous allons créer un data
      Vector v = new Vector();
      Vector a = new Vector();
      a.add("1");
      a.add("2");
      a.add("3");
      a.add("4");
      Vector b = new Vector();
      b.add("5");
      b.add("6");
      b.add("7");
      b.add("8");
      Vector c = new Vector();
      c.add("9");
      c.add("10");
      c.add("11");
      c.add("12");
      Vector d = new Vector();
      d.add("13");
      d.add("14");
      d.add("15");
      d.add("16");
      v.add(a);
      v.add(b);
      v.add(c);
      v.add(d);

      table = new MyTable(v);

      bouton = new JButton("Sauver dans un fichier excel");
      bouton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
          JMyFileChooser choose = new JMyFileChooser(JMyFileChooser.SAVE_DIALOG);
          int valeur = choose.showSaveDialog(null);

          if(valeur == JMyFileChooser.APPROVE_OPTION){
            //Nous récupérons les données
            Vector data = table.getData();

            /*Nous allons vérifier que le fichier se termine bien par
           l'extension xls*/
           String filename = choose.getSelectedFile().getAbsolutePath();

           if(!filename.endsWith(".xls")){
             filename = filename + ".xls";
           }

           //Nous allons créer le fichier xls
           try{
             //1ére étape : création du WritableWorkbook
             WritableWorkbook workbook = Workbook.createWorkbook(new File(
                  filename));

             //2nd étape : création de la 1ére page du classeur xls
             WritableSheet sheet = workbook.createSheet("First sheet", 0);

             //3éme étape : insérer les informations de la table dans le classeur
             Label label;
             Vector tempo;

             for(int i = 0; i < data.size(); i++){
               tempo = (Vector)data.get(i);

               for(int j = 0; j < tempo.size(); j++){
                 label = new Label(j, i, tempo.get(j).toString());
                 sheet.addCell(label);
               }
             }

             /*4éme étape : aprés avoir insérer les cellules, nous créeons le fichier
             et nous fermons le flux*/
             workbook.write();
             workbook.close();
           }
           catch(Exception ex) {
             JOptionPane.showMessageDialog(null, "Impossible de créer le fichier xls", "Erreur", JOptionPane.ERROR_MESSAGE);
           }
          }
        }
      });
    }

    this.add("Center", new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED));
    this.add("South", bouton);
  }
}

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

20 septembre 2004 11:35:42 :
Affichage du code principale Bug curieux (que je n'ai pas corrigé) : quand on ouvre un fichier, la derniére colonne ne s'affiche pas (à voir)

Commentaires et avis

signaler à un administrateur
Commentaire de GodConan le 17/09/2004 16:54:32

tres bonne idee de source ... ;o)

signaler à un administrateur
Commentaire de indiana_jules le 17/09/2004 17:27:21

ya pas de quoi :p

signaler à un administrateur
Commentaire de vin100time le 29/09/2004 11:54:08

Bravo pour ton programme, par contre, as tu une idée pour transposer un fichier xml en un fichier xls en java?

signaler à un administrateur
Commentaire de indiana_jules le 04/10/2004 14:05:56

Ben je pense que tu analyses le fichier XML avec SAX ou DOM, et que ensuite, pour chaque gros "ensemble", l'insérer directement dans le feuille Excel, sans passer par un vector.

signaler à un administrateur
Commentaire de the_gaston le 18/01/2005 09:50:54

Salut a tous!
j'aimerai s'aivoir comment il faut faire pour deployer Jxl pour qu'il soit utilisable par toutes les applications java

Merci et a bientot

signaler à un administrateur
Commentaire de indiana_jules le 02/02/2005 09:04:08

La meilleure solution = que Sun l'incorpore dans son JDK/SDK. Sinon, l'installer sur chaque poste qui utilise un programme java et en modifiant le path du système afin qu'il l'utilise.

signaler à un administrateur
Commentaire de Shadock80 le 21/06/2005 11:06:26

"NOTE IMPORTANTE : ce package est sous licence GNU (Gnuw's Not Unix). Autrement dit, ce package est gratuit, mais si on l'incorpore dans un programme qui est commercialisé ou pas, nous devons fournir non seulement le code source du package, mais de tout le programme également !!!!"

Cela fait plusieurs fois depuis que je me renseigne sur jxl que je retrouve cette erreur, donc je tiens à la corriger ici pour les prochains qui se renseigneront sur cette API :-) : jxl est sous licence GNU LGPL, et non GNU GPL.
La licence GPL oblige toute application qui utilise tout ou partie de son code a etre place sous licence GPL.
La licence LGPL permet d'utiliser son code au sein de n'importe quelle application sans imposer la licence de l'application finale. On peut donc créer une application commerciale à partir d'un programme sous licence LGPL sans problème.
Beaucoup de personnes font l'amalgame licence GNU = GPL, or il existe plusieurs licences GNU (GPL, LGPL, GFDL).

Pour ceux qui veulent en savoir plus :
licence GNU GPL :
  en anglais : http://www.gnu.org/licenses/gpl.html
  en francais (traduction non officielle) : http://www.april.org/gnu/gpl_french.html
licence GNU LGPL :
  en anglais : http://www.gnu.org/licenses/lgpl.html
  en francais (traduction non officielle) : http://www.rodage.org/lgpl.fr.html

En espérant que cela évitera à de futurs utilisateurs de passer a côté de cette excellente API qu'est jxl (qui est en plus assez simple d'utilisation)


Merci à indiana_jules pour ce code bien commenté qui m'a été très utile pour la "prise en main" de cette api ;-) (pas facile de trouver des exemples, et encore moins en francais)

signaler à un administrateur
Commentaire de indiana_jules le 29/06/2005 10:07:48

Ya pas de quoi :p (pour la licence GNU, je l'avais bien précisé dans la description de ma source, mais il est toujours utile de le repréciser)

signaler à un administrateur
Commentaire de wissam_ibtissam le 06/03/2006 15:42:47

salut, comment on convertie un fichier Excel en un fichier XML par JAVA?

signaler à un administrateur
Commentaire de adan2201 le 27/06/2006 14:25:31

salu a tous
j'ai fait comme dans le commentaire pour utiliser ton programme
mais quand je le compile il me met package jxl.jar introuvable.
peut tu me dire ce que je dois faire? please

signaler à un administrateur
Commentaire de indiana_jules le 05/09/2006 12:03:46

Il faut telecharger le package via ce lien : http://www.andykhan.com/jexcelapi/

ensuite créer un répertoire jexcelapi, le placer à l'intérieure et placer le répertoire au même niveau que le fichier excel.jar

voilà

signaler à un administrateur
Commentaire de zahourti le 02/05/2007 08:34:43

merci

signaler à un administrateur
Commentaire de oussama83tunis le 07/11/2007 13:41:31

Salut je voulais vous dire que votre travail est bien util.Mais j'ai un pti problème en ce qui concerne les formats des nombres decimaux extraits.j'ai testé l'extraction des données du fichier excel que je veux lire et je n'obtient qu'une precision de 10 -3 malgré que les nombres décimaux que j'ai dans le fichier excel ont la forme de 0.324567.Je demande ton aide sur ce sujet.merci d'avance.

signaler à un administrateur
Commentaire de indiana_jules le 07/11/2007 13:45:09

Salut,
ça fait un bail que je n'ai pas bossé sur cette API, mais je te conseille de regarder le tuto du créateur de l'API, notamment ce lien : http://www.andykhan.com/jexcelapi/tutorial.html#formatting%20numbers

qui permet justement de formater les cellules pour des chiffres

Voili voilà

signaler à un administrateur
Commentaire de oussama83tunis le 07/11/2007 14:19:50

aaahhh oui.merci vraiment merci..:)ça y est je l'ai eu.:) pourtant ça a été devant moi..:) allez bonne journée.

signaler à un administrateur
Commentaire de indiana_jules le 07/11/2007 14:23:24

il n'y a pas de quoi

(\ _ /)
(='.'=) Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode