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("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"));
//cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00"));//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("I"+ligne_trouvee+"/C"+ligne_trouvee);
//arrondir à 2 chiffre après la virgule
cellStyle = wb2.createCellStyle();
cellStyle.setDataFormat(fmt.getFormat("0.0%"));
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
}
}
}
}
}
}
//on réécrit la
formule du total colonne I
<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]
