Bonjour,
J'ai créer un petit programme java qui gènère les horaires en heures pour 1 mois entier, pour chaque emplyoé.
Et j'ai également les fichier xls pour chaque employé, avec à l'intérieur une feuille pour chaque mois.
Je dois donc entrer les horraires correspondant à côté de chaque jour. soit 4 case heure début matin, heure fin matin, heure début aprèsmidi heure fin après midi. je dois également modifier une case pour dire si la personne travail la nuit.
tous ca c'est bon, les horaires sont rentré sans problème les case nuit sont marquée juste et tout.
Le seul problème, c'est la mis-à-jour des autres cellule. exemple:
à côté des 4 case que je dois remplir pour les heures il y a une case total, qui calcul le nombre d'heure total pour chaque jour, en base il y a la somme pour tout le mois, et d'autre case sont également utilisée.
en gros après quand j'ouvre le fichier, toutes les case que je devais remplir sont bien remplient. mais les cellule qui contiennent une formule qui dépendant de ces cases reste inchangée. Et par exemple pour que le total du jour 1 s'update, je dois effacer l'une des case des heure et la re-rentrer manuelement et après c'est bon (juste pour le jour 1) du coup je dois tout refaire à la main en gros, ce qui rend le programme totalement useless....
Donc voilà, comment faire en sorte que les ceullules s'update?
voici le code de l'écriture:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 private void writeScheduleForMonth(int month, int emplID){ String fileName = pathFolder+"\\Horaires - empl"+emplID+" - manu.xls"; System.out.println(fileName+" :: "+emplIDHashMap.get(emplID)); System.out.println("Mois de "+monthIDHashMap.get(month)); Iterator<Integer> it = scheduleOfTheMonth.keySet().iterator(); try { POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(fileName)); HSSFWorkbook workbook = new HSSFWorkbook(fs); HSSFSheet worksheet = workbook.getSheetAt(month-1); // index from 0,0... cell A1 is cell(0,0) HSSFRow currentRow = worksheet.getRow(20); HSSFCell currentCell = currentRow.getCell(1); while(it.hasNext()){ int day = it.next(); for(int i = 20; i < 52;i++){ currentRow = worksheet.getRow(i); currentCell = currentRow.getCell(1); if(currentCell.getCellType() == Cell.CELL_TYPE_NUMERIC){ if(currentCell.getNumericCellValue() == day){ double[] schedHour = scheduleOfTheMonth.get(day); for(int j = 0; j < 4; j++){ currentCell = currentRow.getCell(currentCell.getColumnIndex()+1); if(j == 0 || j == 2){ if(schedHour[j] == 0.0 && schedHour[j+1] > 0.0){ schedHour[j] = 4.0; } } currentCell.setCellValue(schedHour[j]); } if((schedHour[1] == 24.0) || (schedHour[3] == 24.0)){ currentCell = currentRow.getCell(currentCell.getColumnIndex()+2); currentCell.setCellValue("X");//marquage de la cellule nuit } } } } } FileOutputStream fileOut = new FileOutputStream(fileName); workbook.write(fileOut); fileOut.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
Merci pour votre aide
Partager