[POI] Ecriture à la suite d'un fichier Excel
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:
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:
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:
FileOutputStream out = new FileOutputStream(fichier);
ça marche. Désolée