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:
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 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());
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).
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); }
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
ça marche. Désolée
Code : Sélectionner tout - Visualiser dans une fenêtre à part FileOutputStream out = new FileOutputStream(fichier);
Partager