Bonjour,

Je tente d'écrire à la suite d'un fichier Excel déjà existant. A priori tout se passe à merveille, pas d'erreur, sauf que mon fichier reste inchangé.
J'utilise POI d'Apache.

Voilà le code principal:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
getData();
        try{
            FileInputStream fis = new FileInputStream(fichier);
            POIFSFileSystem fs = new POIFSFileSystem(fis);
            classeur = new HSSFWorkbook(fs,false);
            sheetAnalyses = classeur.getSheet("Analyses");
        }catch(FileNotFoundException fnfe){
            new Popup("Erreur", "Erreur : Impossible de trouver le fichier Excel.");
	}catch(IOException ioe){
            new Popup("Erreur", "Erreur : Erreur d'entrée/sortie.");
        }
        sauverCas(premiereLigneVide());
Et les fonctions qu'il appelle:

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
public void sauverCas(int i){
        if(i != -1){
            HSSFRow row = sheetAnalyses.createRow(i);
            row.createCell(0).setCellValue(dateDebut);
            ...
            row.createCell(11).setCellValue(prixTotal);
            for(int j = 0; j <= 11; j++)
                sheetAnalyses.autoSizeColumn(j);
            //Ecriture du nouveau cas dans le fichier Analyses_enregistrees.xls
            try{
                FileOutputStream out = new FileOutputStream(fichier, true);
                classeur.write(out);
                out.close();
                new Popup("Enregistrement réussi", "Le cas a bien été enregistré.");
            }catch(Exception e){
		new Popup("Erreur", "Erreur : Une erreur est survenue lors de l'écriture dans le fichier.");
            }
        }else{
            new Popup("Erreur", "Erreur : Une erreur est survenue lors de l'écriture dans le fichier.");
        }
    }
 
    public int premiereLigneVide(){
        int i = -1;
        int j = -1;
        int MAX = 25000;
        try{
            do{
              j++;
              HSSFRow row = sheetAnalyses.getRow(j);
              HSSFCell cell = row.getCell(0);
            }while(j < MAX);
	}catch(NullPointerException npe){
            i = j;
        }
        return(i);
    }
J'ai fait des tests et la fonction premiereLigneVide() me renvoie 1 (valeur voulue car mon fichier ne contient pour l'instant que les en-têtes des colonnes).
Quand je lance le programme, le popup "enregistrement réussi" apparaît, mais le fichier demeure inchangé.

Merci d'avance de votre aide.

EDIT: Sorry, j'ai trouvé l'erreur.
FileOutputStream out = new FileOutputStream(fichier, true);
Avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
FileOutputStream out = new FileOutputStream(fichier);
ça marche. Désolée