Mark Beardsley wrote
> 
> Can I ask, why do you call the setRowNumber() method in the first line of
> the chunk of code you are posting? 

-> Because, i would like to set row at ligne 20.
The total is on this line.

In fact, I do this:
int nbfeuille=0;
                                        int ligne_trouvee;
                                        //version .xlsx
                                        InputStream ist = new
FileInputStream("C:/Donnees/Aide_Manager/Projection_2012_Eq2.xlsx");
                                        OPCPackage 
opc=OPCPackage.open(ist);//version .xlsx
                                    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(); //version .xlsx
                                        //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(&quot;S&quot;)){//si ca commence par
&quot;S&quot;
                                                        //on enleve le 
&quot;S&quot;
                                                        
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(&quot;onglet: &quot;+onglet_conv);
                                                        if(onglet_conv == 
semaine){//si la semaine de l'onglet du doc
&quot;extract.xls&quot;
                                                                                
                                //correspond à la semaine de l'année trouver 
dans le fichier
&quot;Projection_2012_Eq2.xls&quot;
                                                        
                                                                
System.out.println(&quot;onglet de la semaine
&quot;+onglet_conv+&quot; TROUVEE !&quot;);
                                                                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 &amp;&amp; row2.getRowNum() &lt;= 19){//
si la ligne est différent de null et inférieur ou égale à la 20ème ligne
                                                                                
if(!row2.getCell(0).getStringCellValue().equals(&quot;Noms&quot;)
&amp;&amp; !row2.getCell(0).getStringCellValue().equals(&quot;EQUIPE&quot;)
&amp;&amp; !row2.getCell(0).getStringCellValue().equals(&quot;&quot;)){
                                                                                
        //on récupère le 1er prénom du fichier Projection
                                                                                
        prenom_proj=row2.getCell(0).getStringCellValue().toUpperCase();
                                                                                
                                                                                
        for (int d=0; d&lt;tab.length;d++){
                                                                                
                if(tab[0][d] != null || tab[1][d]!=null){//si l'une des cellules
n'est pas null
                                                                                
                        //System.out.println(&quot;Tab&quot;+tab[0][d]);
                                                                                
                        //System.out.println(&quot;prénom: &quot;+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(&quot;Strings are 
equivalent&quot;);
                                                                                
                             System.out.println(&quot;Agent: 
&quot;+tab[0][d]+&quot;
Validation: &quot;+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(&quot;ligne TROUVEE:
&quot;+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(&quot;I&quot;+ligne_trouvee+&quot;/B&quot;+ligne_trouvee);
                                                                                
                                        //System.out.println(&quot;Formule:
I&quot;+ligne_trouvee+&quot;/B&quot;+ligne_trouvee);
                                                                                
                                        //arrondir à 2 chiffre après la virgule
                                                                                
                                    cellStyle = wb2.createCellStyle();
                                                                                
                                   
cellStyle.setDataFormat(fmt.getFormat(&quot;#,##0.00&quot;));
                                                                                
                                   
//cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat(&quot;#,##0.00&quot;));//version
.xls
                                                                                
                                    cell2.setCellStyle(cellStyle);
                                                                                
                                        
                                                                                
                                        //on ré-écrit la formule pour la 
colonne K
                                                                                
                                    cell2 = row2.getCell(10);// colonne(K)
                                                                                
                                        cell2 = row2.createCell(10);
                                                                                
                                 
cell2.setCellFormula(&quot;I&quot;+ligne_trouvee+&quot;/C&quot;+ligne_trouvee);
                                                                                
                                        //arrondir à 2 chiffre après la virgule
                                                                                
                                    cellStyle = wb2.createCellStyle();
                                                                                
                                    
cellStyle.setDataFormat(fmt.getFormat(&quot;0.0%&quot;));
                                                                                
                                    cell2.setCellStyle(cellStyle);
                                                                                
                                        
                                                                                
                                        //on ré-écrit la formule pour la 
colonne L
                                                                                
                                    cell2 = row2.getCell(11);// colonne(L)
                                                                                
                                        cell2 = row2.createCell(11);
                                                                                
                                 
cell2.setCellFormula(&quot;J&quot;+ligne_trouvee+&quot;*7&quot;);
                                                                                
                                        //System.out.println(&quot;Formule:
J&quot;+ligne_trouvee+&quot;*7&quot;);
                                                                                
                                        //arrondir à 2 chiffre après la virgule
                                                                                
                                    cellStyle = wb2.createCellStyle();
                                                                                
                                   
cellStyle.setDataFormat(fmt.getFormat(&quot;#,##0.00&quot;));
                                                                                
                                    cell2.setCellStyle(cellStyle);

                                                                                
                                        ligne_trouvee--;//pour retrouver ma 
ligne
                                                                                
                                        
                                                                                
                         }
                                                                                
                        
                                                                                
                }
                                                                                
                
                                                                                
        }
                                                                                
}
                                                                                
                                                                        }
                                                                }
                                                                
                                                                //on réécrit la 
formule du total colonne I
                                                                
&lt;b>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(fmt.getFormat("#,##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(fmt.getFormat("#,##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(fmt.getFormat("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(fmt.getFormat("0.00"));
                                                            
cell2.setCellStyle(cellStyle);          
                                                }
                                                }
                                        }//for  
                                        //pour ecrire dans le même fichier
                                        FileOutputStream fileOut = new
FileOutputStream("C:/Donnees/Aide_Manager/Projection_2012_Eq2.xlsx");
                                        wb2.write(fileOut);
                                    fileOut.close();
                        } catch (FileNotFoundException ex){
                                ex.printStackTrace();
                        } catch (IOException ex) {
                                ex.printStackTrace();
                        } catch (InvalidFormatException ex) {
                                // TODO Auto-generated catch block
                                ex.printStackTrace();
                        } catch (ParseException ex) {
                                // TODO Auto-generated catch block
                                ex.printStackTrace();
                        }


--
View this message in context: 
http://apache-poi.1045710.n5.nabble.com/How-to-write-the-Formula-of-division-with-2007-excel-files-and-POI-tp5528227p5543437.html
Sent from the POI - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to