Bonjour,
Je relance cette discussion parce que j'ai un problème et je voudrai bien que quelqu'un puisse m'aider à le résoudre car c'est très urgent et très important.
J'ai un fichier excel que je veux lire et appliquer des traitements spécifiques sur son contenu.
J'ai parcouru le fichier et j'ai sauvegardé les données dans des collections et des vectors et par la suite j'ai appliqué les traitements dont j'ai besoin mais, malheureusement, j'ai pas eu de résultats et j'arrive pas à cerner le problème et trouver l'emplacement de l'erreur.
j'espère que quelqu'un puisse m'aider à trouver une solution à mon problème car c'est très très urgent, il s'agit de mon projet de fin d'étude.
Merci d'avance!
Je suis vraiment débutant dans le développement. Je compte apprendre VBA mais dans quelques jours je commence.
J'ai vraiment apprécié la solution package et elle va beaucoup me servir. Je développe des
petites applications sur Excel (gestion de stocks, de trésorerie, gestion des salaires...). Je crée plusieurs fichier liés avec des liens hypertextes. Je souhaiterais constitué un pack qui permet de télécharger tous les fichiers liés en même temps. Mille merci de votre aide.
Dans le zip se trouve un jar contenant toutes les classes nécessaires et qui lancer la démo. Le bout de code ci-dessus est une illustration de la démo, mais il doit être extrapoler en fonction de ses besoins et des APIs qu'on a (exemple, j'ai créer une api pour me faciliter la vie où j'ai une classe MyFileChooser. Dans ton cas, il faudra passer par un JFileChooser).
Le but de ce code était de montrer à l'époque un exemple d'utilisation. A partir de cet exemple, tu devrais pouvoir écrire ton propre bout de code.
Voici une classe générant des données de manières aléatoires :
/**
* Hello world!
*
*/
public class App
{
private static final Integer NB_COLUMN = 25;
private static final Integer NB_ROW = 10000;
public static void main( String[] args )
{
System.out.println("Test de JExcelApi");
// Création des données
System.out.println("Début de création des données (" + NB_COLUMN + " colonnes, " + NB_ROW + " lignes d'enregistrements avec des données aléatoires)");
List<String> headerData = new ArrayList<String>();
for(Integer i = 0; i < NB_COLUMN; i++){
headerData.add("Colonne num " + i);
}
List<List<String>> datas = new ArrayList<List<String>>();
for(Integer i = 0; i < NB_ROW; i++){
List<String> row = new ArrayList<String>();
for(Integer j = 0; j < NB_COLUMN; j++){
row.add("" + (Math.random() * 1000));
}
datas.add(row);
}
System.out.println("Fin de création des données");
// Création d'un workbook
try {
System.out.println("Création d'un workbook dans un fichier externe (test.xls)");
WritableWorkbook workbook = Workbook.createWorkbook(new File("test.xls"));
System.out.println("Fin de création d'un workbook");
// Création d'une feuille
System.out.println("Création d'une feuille ('test jxl')");
WritableSheet sheet = workbook.createSheet("test jxl", 0);
System.out.println("Fin d'une feuille");
// Insertion de l'entête
System.out.println("Insertion de l'entête");
sheet.getSettings().setDefaultColumnWidth(25);
WritableCellFormat cellFormat = new WritableCellFormat(
new WritableFont(WritableFont.COURIER, 16, WritableFont.BOLD));
cellFormat.setBorder(Border.ALL, BorderLineStyle.MEDIUM, Colour.RED);
for(Integer i = 0; i < NB_COLUMN; i++){
sheet.addCell(new Label(i, 0, headerData.get(i), cellFormat));
}
System.out.println("Fin de l'insertion de l'entête");
// Insertion des données
System.out.println("Insertion des données");
for(Integer i = 0; i < NB_ROW; i++){
List<String> rowData = datas.get(i);
Integer index = 0;
Bonjour,
excuse moi ma kestion paraitra bete on ne vois pas ca en cours et en plus chui debutante
je ne trouve pas de methode main dans le programme et j'ai coe l'impression kil me faut une classe MyTable etMyFileChooser je me trompe?
merci encore pour ton aide
Je crains que le package ne soit pas installé, et que tu failles le télécharger soit manuellement (puis le préciser dans ton projet Eclipse), soit en le précisant dans ton pom si ton projet est géré par Maven.
merci pour votre reponse tres rapide j'ai essaye de tester le programme mais j'ai tellement de faute j'ai juste copie le programme et je l'ai colle dans mon environnement(eclipse je suppose ke le package y est deja installe)
sais tu peux etre ou la faute pourrais venir si le programme marche chez les autres pourkoi pas chez moi?
Merci pour vos reponses
Je ne comprends pas bien ta question en fait. Si tu veux juste consulter le fichier Excel via JXL, il suffit normalement de faire :
Workbook workbook = Workbook.getWorkbook(new File(nomEtEmplacementDeTonFichierExcel));
De là, tu pourras le manipuler via Java.
Si tu veux modifier un champ et sauvegarder ton Workbook (et donc de ne pas re-remplir ton fichier Excel), je pense qu'il faille faire cela:
WritableWorkbook workbookASauver = Workbook.createWorkbook(new File(nomEtEmplacementDeTonFichierExcel), workBook);
workbookASauver.write(); // va écraser ton fichier avec les modifications que tu as faites
comment faire quand on a deja un fichier excel et que l'on veut le mettre dans java j'ai pas envie de remplir le fichier je l'ai deja sauvegarde quelque part
merc d'avance
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.
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
"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).
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)
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.
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.
16 août 2010 à 02:51
Je relance cette discussion parce que j'ai un problème et je voudrai bien que quelqu'un puisse m'aider à le résoudre car c'est très urgent et très important.
J'ai un fichier excel que je veux lire et appliquer des traitements spécifiques sur son contenu.
J'ai parcouru le fichier et j'ai sauvegardé les données dans des collections et des vectors et par la suite j'ai appliqué les traitements dont j'ai besoin mais, malheureusement, j'ai pas eu de résultats et j'arrive pas à cerner le problème et trouver l'emplacement de l'erreur.
j'espère que quelqu'un puisse m'aider à trouver une solution à mon problème car c'est très très urgent, il s'agit de mon projet de fin d'étude.
Merci d'avance!
12 févr. 2010 à 14:16
Je suis vraiment débutant dans le développement. Je compte apprendre VBA mais dans quelques jours je commence.
J'ai vraiment apprécié la solution package et elle va beaucoup me servir. Je développe des
petites applications sur Excel (gestion de stocks, de trésorerie, gestion des salaires...). Je crée plusieurs fichier liés avec des liens hypertextes. Je souhaiterais constitué un pack qui permet de télécharger tous les fichiers liés en même temps. Mille merci de votre aide.
23 oct. 2009 à 17:27
23 oct. 2009 à 16:37
Dans le zip se trouve un jar contenant toutes les classes nécessaires et qui lancer la démo. Le bout de code ci-dessus est une illustration de la démo, mais il doit être extrapoler en fonction de ses besoins et des APIs qu'on a (exemple, j'ai créer une api pour me faciliter la vie où j'ai une classe MyFileChooser. Dans ton cas, il faudra passer par un JFileChooser).
Le but de ce code était de montrer à l'époque un exemple d'utilisation. A partir de cet exemple, tu devrais pouvoir écrire ton propre bout de code.
Voici une classe générant des données de manières aléatoires :
/**
* Hello world!
*
*/
public class App
{
private static final Integer NB_COLUMN = 25;
private static final Integer NB_ROW = 10000;
public static void main( String[] args )
{
System.out.println("Test de JExcelApi");
// Création des données
System.out.println("Début de création des données (" + NB_COLUMN + " colonnes, " + NB_ROW + " lignes d'enregistrements avec des données aléatoires)");
List<String> headerData = new ArrayList<String>();
for(Integer i = 0; i < NB_COLUMN; i++){
headerData.add("Colonne num " + i);
}
List<List<String>> datas = new ArrayList<List<String>>();
for(Integer i = 0; i < NB_ROW; i++){
List<String> row = new ArrayList<String>();
for(Integer j = 0; j < NB_COLUMN; j++){
row.add("" + (Math.random() * 1000));
}
datas.add(row);
}
System.out.println("Fin de création des données");
// Création d'un workbook
try {
System.out.println("Création d'un workbook dans un fichier externe (test.xls)");
WritableWorkbook workbook = Workbook.createWorkbook(new File("test.xls"));
System.out.println("Fin de création d'un workbook");
// Création d'une feuille
System.out.println("Création d'une feuille ('test jxl')");
WritableSheet sheet = workbook.createSheet("test jxl", 0);
System.out.println("Fin d'une feuille");
// Insertion de l'entête
System.out.println("Insertion de l'entête");
sheet.getSettings().setDefaultColumnWidth(25);
WritableCellFormat cellFormat = new WritableCellFormat(
new WritableFont(WritableFont.COURIER, 16, WritableFont.BOLD));
cellFormat.setBorder(Border.ALL, BorderLineStyle.MEDIUM, Colour.RED);
for(Integer i = 0; i < NB_COLUMN; i++){
sheet.addCell(new Label(i, 0, headerData.get(i), cellFormat));
}
System.out.println("Fin de l'insertion de l'entête");
// Insertion des données
System.out.println("Insertion des données");
for(Integer i = 0; i < NB_ROW; i++){
List<String> rowData = datas.get(i);
Integer index = 0;
for(String cellData : rowData){
sheet.addCell(new Label(index, i + 2, cellData));
index++;
}
}
System.out.println("Fin d'insertion des données");
// Enregistrement du fichier Excel
workbook.write();
workbook.close();
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Fin d'enregistrement du fichier");
}
}
Bonne continuation
23 oct. 2009 à 15:36
excuse moi ma kestion paraitra bete on ne vois pas ca en cours et en plus chui debutante
je ne trouve pas de methode main dans le programme et j'ai coe l'impression kil me faut une classe MyTable etMyFileChooser je me trompe?
merci encore pour ton aide