Modifier une cellule dans un fichier excel

API JXL

a marqué ce sujet comme résolu.

Bonjour, voici le code ci-contre :

public class Main {

    public static void main(String[] args) throws BiffException, IOException, WriteException {
        
         Workbook workbook = Workbook.getWorkbook(new File("E:\\A15_TOUS_ENSEMBLE_PURGES.xls"));
         WritableWorkbook excelbook = Workbook.createWorkbook(new File("E:\\A15_TOUS_ENSEMBLE_PURGES.xls"));
         Sheet sheet = workbook.getSheet(0);
         Sheet sheet1 = workbook.getSheet(1);
         WritableSheet ws = excelbook.getSheet(0);
         int j = 1;  
         int trouve;

         for(int i = 1; i < sheet.getRows();i++) {
             trouve = 0;
             WritableCell cell4 = (WritableCell) sheet.getCell(8,i);
             while(j < sheet1.getRows() && trouve == 0) {
                 if(sheet.getCell(3,i).getContents().equals(sheet1.getCell(3,j).getContents())) {
                     if(sheet.getCell(8,i).getContents().equals(sheet1.getCell(10,j).getContents())) {
                         String resultat = sheet.getCell(8,i).getContents()+"+"+sheet1.getCell(10,j).getContents();
                         cell4 = ws.getWritableCell(resultat);
                     }else {
                          String reference_feuille2 = sheet1.getCell(10,j).getContents();
                          cell4 = ws.getWritableCell(reference_feuille2);
                     }
                 }else {
                     j++;
                 }
             }
         }
        excelbook.write();
        excelbook.close();
    }
}

et voici son résultat : image.png

Je n’arrive pas à savoir pourquoi il me sort cette exception En faite ce que je voudrais faire c’est parcourir deux feuille dans un fichier excel en même temps, comparer 2 colonnes (1 dans la feuille0 et une dans la feuille1) et si elle sont egaux —> remplir une colonne dans la feuille1 avec une valeur recuperer dans la feuille numéro2, mais ca ne marche pas et même sans cette exception, je ne pense pas que le code fonctionne parce que il me supprime totalement le contenu du excel de base et il se retrouve vide, si quelqu’un pourrait regarder et me dire ce qui vas pas, Merci d’avance à ceux qui voudront bien m’aider à résoudre ce problème

+0 -0

Bonjour !

Je soupçonne que tu essaies d’accéder à une feuille qui n’existe pas. En effet, tu créées un nouveau document puis tentes d’accéder à une feuille sans jamais appeler de méthode pour la créer.

WritableWorkbook excelbook = Workbook.createWorkbook(new File("E:\\A15_TOUS_ENSEMBLE_PURGES.xls"));
// […]
WritableSheet ws = excelbook.getSheet(0);

Ce qui me surprends un peu plus c’est que l’erreur vient ligne 22 et non ligne 7, mais c’est peut-être simplement que le chargement de la feuille de calcul est paresseux et attend le premier usage.

Je ne connais pas la bibliothèque que tu utilises (JExcelAPI je suppose ? Il serait utile de la citer ;) ), mais je t’invite à vérifier que ça ne viendrait pas de là.


Au passage, tu crées une référence vers une feuille existante et une nouvelle feuille à partir du même fichier. Est-ce bien l’objectif ? N’y a-t-il pas de risque d’écrasement de données et donc une petite erreur d’inattention ici ? Je n’en suis pas sûr ne connaissant pas la bibliothèque, mais ça m’intrigue et ça pourrait être une erreur donc je préfère demander.

Workbook workbook = Workbook.getWorkbook(new File("E:\\A15_TOUS_ENSEMBLE_PURGES.xls"));
WritableWorkbook excelbook = Workbook.createWorkbook(new File("E:\\A15_TOUS_ENSEMBLE_PURGES.xls"));
+0 -0

Merci de ta réponse, alors effectivement j’utilise l’api jxl pour faire ce programme, en faite j’ai un fichier excel qui comporte 3 feuille mais seulement la feuille 1 et 2 sont utilisé, il n’y a rien dans la feuille 3. image.png

Ensuite ce que je voudrais faire c’est prendre les valeurs contenues dans cette colonne de la feuille2 image.png

et les inserer dans cette colonne de la feuille 1 qui est vide image.png

mais que si les references des 2 feuilles sont egaux.

+0 -0

Petit up

 Workbook workbook = Workbook.getWorkbook(new File("E:\\A15_TOUS_ENSEMBLE_PURGES.xls"));
         WritableWorkbook excelbook = Workbook.createWorkbook(new File("E:\\A15_TOUS_ENSEMBLE_PURGES_1.xls"),workbook);
         Sheet sheet = workbook.getSheet(0);
         Sheet sheet1 = workbook.getSheet(1);
         WritableSheet ws = excelbook.getSheet(0);
        WritableCell cell4;
         int j = 1;  
         int trouve;
        

         for(int i = 1; i < sheet.getRows();i++) {
             trouve = 0;
             while(j < sheet1.getRows() && trouve == 0) {
                 System.out.println(sheet.getCell(2,i).getContents());
                 if(sheet.getCell(3,i).getContents().equals(sheet1.getCell(3,j).getContents())) {
                     if(sheet.getCell(8,i).getContents().equals(sheet1.getCell(10,j).getContents())) {
                         trouve = 1;
                         cell4 = ws.getWritableCell(sheet.getCell(8,i).getContents()+"_"+sheet1.getCell(10,j).getContents());
                         Label label = new Label(8,i,sheet.getCell(10,j).getContents());
                         ws.addCell(label);
                     }else {
                          cell4 = ws.getWritableCell(sheet1.getCell(10,j).getContents());
                          Label label = new Label(8,i,sheet.getCell(10,j).getContents());
                          ws.addCell(label);
                     }
                 }else {
                     j++;
                 }
                 j++;   
             }
         }
        excelbook.write();
        excelbook.close();
        workbook.close();
    }
}

J’ai réussi à faire en sorte qu’il me copie mon excel de base dans un nouveau fichier excel en gardant les bonnes valeurs, le souci c’est que l’affection des lignes de la colonne Description ne s’est pas mis à jour et en faite je sais pourquoi parce qu’il me rentre pas dans mes boucles if parce que vous voyez le :

System.out.pritnln(sheet.getCell(2,i).getContents()

Il me sort toujours image.png On dirait qu’il m’incremente pas mon i et du coup il passe jamais dans la première boucle if donc si quelqu’un peut me dire pourquoi, merci d’avance et bonne journée

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte