| 12
 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
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 
 | 
int nbfeuille=0;
				int ligne_trouvee;
				//version .xls
				/*InputStream ist = new FileInputStream("C:/Users/LZ2059/Desktop/Projection_2012_Eq2.xls"); //pour ouvrir les fichiers xls de 2007
				HSSFWorkbook wb2 = new HSSFWorkbook(ist);
				HSSFSheet sheet2 = wb2.getSheetAt(0);
				nbfeuille= wb2.getNumberOfSheets();//retourne le nombre de feuille renseigné
				HSSFRow row2 = null;
				HSSFCell cell2 = null;
				HSSFCellStyle cellStyle = null;*/
				
				//version .xlsx
				InputStream ist = new FileInputStream("C:/Users/LZ2059/Desktop/Projection_2012_Eq2.xlsx");
				OPCPackage opc=OPCPackage.open(ist);			    XSSFWorkbook wb2= new XSSFWorkbook(opc); 
				XSSFSheet sheet2 = wb2.getSheetAt(0);//onglet 0
				nbfeuille= wb2.getNumberOfSheets();//retourne le nombre de feuille renseigné
				XSSFRow row2 = null;
				XSSFCell cell2 = null;
				XSSFCellStyle cellStyle = null;
				XSSFDataFormat fmt = wb2.createDataFormat(); 
				//pour ouvrir un .xlsx
			    FormulaEvaluator evaluator = wb2.getCreationHelper().createFormulaEvaluator();
			    evaluator.evaluate(cell2);
				
				String prenom_proj;
				Collator usCollator;
				System.out.println("wb2.getNumberOfNames(): "+nbfeuille);
				// il faut définir la feuille qui sera alimenté:
				//Parcourir les feuilles du document
				//si la semaine correspond au libellé d'une feuille
				for (int g=0; g<nbfeuille; g++){//boucle de parcours des onglets
					sheet2 = wb2.getSheetAt(g);
					onglet=sheet2.getSheetName();// on récupère le nom de la feuille excel en String
					if(onglet.startsWith("S")){//si ca commence par "S"
						//on enleve le "S"
						semaine_en_string=onglet.substring(1);
						// on converti le nom de l'onglet en Int
						onglet_conv = Integer.parseInt(semaine_en_string);
						System.out.println("onglet: "+onglet_conv);
						if(onglet_conv == semaine){//si la semaine de l'onglet du doc "extract.xls"
													//correspond à la semaine de l'année trouver dans le fichier "Projection_2012_Eq2.xls"
						
							System.out.println("onglet de la semaine "+onglet_conv+" TROUVEE !");
							for (Iterator rowIt = sheet2.rowIterator(); rowIt.hasNext();){//boucle de parcours du fichier de ligne en ligne
								row2 = (XSSFRow) rowIt.next();
								if(row2.getCell(0)!= null && row2.getRowNum() <= 19){// si la ligne est différent de null et inférieur ou égale à la 20ème ligne
									if(!row2.getCell(0).getStringCellValue().equals("Noms") && !row2.getCell(0).getStringCellValue().equals("EQUIPE") && !row2.getCell(0).getStringCellValue().equals("")){
										//on récupère le 1er prénom du fichier Projection
										prenom_proj=row2.getCell(0).getStringCellValue().toUpperCase();
									
										for (int d=0; d<tab.length;d++){
											if(tab[0][d] != null || tab[1][d]!=null){//si l'une des cellules n'est pas null
												//System.out.println("Tab"+tab[0][d]);
												//System.out.println("prénom: "+prenom_proj);
												
												//Get the Collator for US English and set its strength to PRIMARY
												 usCollator = Collator.getInstance(Locale.FRANCE);
												 usCollator.setStrength(Collator.PRIMARY);
												 if( usCollator.compare(prenom_proj, tab[0][d]) == 0 ){//si le prénom trouvé dans le fichier 'Projection_2012_Eq2.xlsx' correspond au prenom de l'extract Hermes
												     //System.out.println("Strings are equivalent");
												     System.out.println("Agent: "+tab[0][d]+" Validation: "+tabvalidation[1][d]);
												     //on récupère la ligne du prénom
												     ligne_trouvee= row2.getCell(0).getRowIndex();
												     ligne_trouvee++;//pour écrire dans la bonne ligne
												     //System.out.println("ligne TROUVEE: "+ligne_trouvee);
												     	//on écrit dans la colonne I la validation du prénom trouvé
												     	cell2 = row2.getCell(8);// colonne(I)
													 	cell2 = row2.createCell(8);
													    cell2.setCellType(Cell.CELL_TYPE_NUMERIC);
													    cell2.setCellValue(tabvalidation[1][d]);
													    
													    //on ré-écrit la formule pour la colonne J
													    cell2 = row2.getCell(9);// colonne(J)
													 	cell2 = row2.createCell(9);
													 	cell2.setCellFormula("I"+ligne_trouvee+"/B"+ligne_trouvee);
													 	//System.out.println("Formule: I"+ligne_trouvee+"/B"+ligne_trouvee);
													 	//arrondir à 2 chiffre après la virgule
													    cellStyle = wb2.createCellStyle();
													    cellStyle.setDataFormat(fmt.getFormat("#,##0.00"));
													    cell2.setCellStyle(cellStyle);
													 	
													 	//on ré-écrit la formule pour la colonne K
													    cell2 = row2.getCell(10);// colonne(K)
													 	cell2 = row2.createCell(10);
													 	cell2.setCellFormula("I"+ligne_trouvee+"/C"+ligne_trouvee);
													 	//arrondir à 2 chiffre après la virgule
													    cellStyle = wb2.createCellStyle();
													    cellStyle.setDataFormat(fmt.getFormat("#,##0.00"));
													    cell2.setCellStyle(cellStyle);
													 	
													 	//on ré-écrit la formule pour la colonne L
													    cell2 = row2.getCell(11);// colonne(L)
													 	cell2 = row2.createCell(11);
													 	cell2.setCellFormula("J"+ligne_trouvee+"*7");
													 	//System.out.println("Formule: J"+ligne_trouvee+"*7");
													 	//arrondir à 2 chiffre après la virgule
													    cellStyle = wb2.createCellStyle();
													    cellStyle.setDataFormat(fmt.getFormat("#,##0.00"));
													    cell2.setCellStyle(cellStyle);
													 	
													 	ligne_trouvee--;//pour retrouver ma ligne
													 	// Write the output to a file
													 	//pour ecrire dans le même fichier
													    FileOutputStream fileOut = new FileOutputStream("C:/Users/LZ2059/Desktop/Projection_2012_Eq2.xlsx");
													    wb2.write(fileOut);
													    fileOut.close();
												 }
												
											}
											
										}
									}
									
								}
							}
							
							//on réécrit la formule du total colonne I
							row2.setRowNum(20);
							//System.out.println("on doit se fixer à la ligne 20: "+row2.getRowNum());
						    cell2 = row2.createCell(8);
						    String colonneI = "I3:I20";
						    cell2.setCellFormula("SUM("+colonneI+")");
						    //format EQUIPE de la colonne I
						    cellStyle = wb2.createCellStyle();
						    cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0"));//format 1 000 par ex.
						    cell2.setCellStyle(cellStyle);
						    
						    //on réécrit la formule du total colonne J
							row2.setRowNum(20);
							//System.out.println("on doit se fixer à la ligne 20: "+row2.getRowNum());
						    cell2 = row2.createCell(9);//colonne J
						    String resultatParH = "SUM(I3:I20)/SUM(B3:B20)";
						    cell2.setCellFormula(resultatParH);
						    //arrondir à 2 chiffre après la virgule
						    cellStyle = wb2.createCellStyle();
						    cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00"));
						    cell2.setCellStyle(cellStyle);
						    
						    //on réécrit la formule du total colonne K
							row2.setRowNum(20);
							//System.out.println("on doit se fixer à la ligne 20: "+row2.getRowNum());
						    cell2 = row2.createCell(10);//colonne K
						    String txtransfo = "(SUM(I3:I20)/SUM(C3:C20))/100";//j'ai rajouté /100 pour prendre en compte le % dans l'ecriture du format
						    cell2.setCellFormula(txtransfo);
						    //arrondir à 2 chiffre après la virgule
						    cellStyle = wb2.createCellStyle();
						    cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00%"));
						    cell2.setCellStyle(cellStyle);
						    
						    //on réécrit la formule du total colonne L
							row2.setRowNum(20);
							//System.out.println("on doit se fixer à la ligne 20: "+row2.getRowNum());
						    cell2 = row2.createCell(11);//colonne L
						    String resultatetp = "J21*7";
						    cell2.setCellFormula(resultatetp);
						    //arrondir à 2 chiffre après la virgule
						    cellStyle = wb2.createCellStyle();
						    cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
						    cell2.setCellStyle(cellStyle);
						    
						    //pour ecrire dans le même fichier
						    FileOutputStream fileOut = new FileOutputStream("C:/Users/LZ2059/Desktop/Projection_2012_Eq2.xlsx");
						    wb2.write(fileOut);
						    fileOut.close();
						    //System.out.println("somme colonne I: "+row2.getCell(8).get);
					}
					
					
					}
				
				}//for	
			
		} catch (FileNotFoundException e){
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InvalidFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} | 
Partager