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 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