[JXL] Problème avec setBackGround

Résolu
Messages postés
8
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
29 mai 2008
-
Messages postés
8
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
29 mai 2008
-
Bonjour,

J'ai commencé le Java il y a 1 mois environ,  j'ai appris par mes propres moyen ( en particulier avec des tutoriels trouvés sur internet notamment grâce à ce site )
Pour mon projet j'aimerais récupérer des données d'un fichier xsl et les mettre dans un fichier txt en les ordonnant d'une certaine manière.
Pour l'instant je m'occupe de récupérer les données du fichier xsl dans des tableaux pour pouvoir les exploiter plus tard.
Le petit problème c'est que dans ce fichier xsl il y a des cellules vide avec un fond en couleur et j'aimerais récupérer un "0" lorsque la case est vide.
J'ai essayé le "getCellFormat()" mais s'il y a un fond le retour n'est pas null...

Pour éviter ce problème j'ai donc décidé d'éditer le fichier xsl en mettant chaque cellules avec la couleur de font par défaut et j'en arrive à ce code:

/**
 * @(#)RecupCell.java
 *
 *
 * @author
 * @version 1.00 2008/4/21
 */
import java.io.*;
import java.awt.*;
import jxl.*;
import jxl.format.Colour;
import jxl.write.*;
import jxl.biff.RecordData;
import jxl.biff.WritableRecordData;
import jxl.biff.XFRecord;
import jxl.write.biff.CellXFRecord;
import jxl.format.Colour;
import jxl.read.biff.BiffException;
import jxl.write.biff.CellValue;
import jxl.write.WritableCellFormat;

public class RecupCell {
   
    private String cellule;
    private CellFormat cellFormat;
   
    public RecupCell(int ligne,int colonne) {
           
        try{
                Workbook workbook = Workbook.getWorkbook(new File("Z:/test.xls"));
                Sheet sheet = workbook.getSheet(0);
               
                Cell x = sheet.getCell(colonne,ligne);
                cellule = x.getContents();
                WritableCellFormat xFormat = new WritableCellFormat(x.getCellFormat());
                xFormat.setBackground(Colour.DEFAULT_BACKGROUND);
                if(x.getCellFormat()== null )
                {
                    cellule = "0 ";
                }   
                workbook.close();
               
        }catch(IOException ioe){
            ioe.printStackTrace();
        }
        catch(BiffException be){
            be.printStackTrace();
        }
        catch(WriteException we){
            we.printStackTrace();
        }
       
       
       
    }
    public String getCellule(){
            return cellule;
    }
   
   
}

et voila l'erreur retourné une fois que le fichier est compilé et que j'ai lancé une ficher xsl à parcourir :

common.AssertionFailed
    at common.Assert.verify(Assert.java:37)
    at jxl.biff.XFRecord.(XFRecord.java:521)
    at jxl.write.biff.CellXFRecord.(CellXFRecord.java:69)
    at jxl.write.WritableCellFormat.(WritableCellFormat.java:96)
    at RecupCell.(RecupCell.java:38)
    ...
(pour les erreurs j'ai pas tout mis il y en avait trop, cela dis si çapeu vous aider n'hésitez pas à me les demander)

Voila j'espère avoir été assez clair m'enfin n'hésitez pas à demander des précisions...

Merci d'avance ça me soulagerais d'un problème que je n'arrive pas à gérer depuis quelques temps ...

(>'-')> Java bien ! <('-'<)

3 réponses

Messages postés
8
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
29 mai 2008

J'ai eu une idée aujourd'hui est en fait Mouzart avais bien raison

Pour mon problème il suffisait de mettre la condition (cellule == "") et après de mettre un 0 dans cellule ...

Maintenant que j'ai trouvais la solution j'ai un peu honte d'avoir posté mon problème ici

Merci

(>'-')> Java bien ! <('-'<)
Messages postés
161
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
6 novembre 2008
4
slt,

En theorie il ya pa de fond vide !!! mais tu dois te focaliser sur le contenu de la cellule car une cell est vide lorsque le contenu est null et pa le fond
allez courage
Messages postés
8
Date d'inscription
dimanche 10 décembre 2000
Statut
Membre
Dernière intervention
29 mai 2008

Re
Le truc c'est alors de savoir comment faire pour que le programme me retourne un "0" lorsque la case est vide avec un fond quelconque.
Je n'est pas réussi  à identifier ce que ce programme retourné lorsque la case est vide mais avec un fond de couleur ...
En faisant des test je peu dire que ce n'est pas : null ou "". ( ou alors c'est mon programme de test qui fonctionne pas comme il faut )
M'enfin merci