Java tutorial
/********************************************************************************* * * Copyright 2014 BOUSSEJRA Malik Olivier, HALDEBIQUE Geoffroy, ROYER Johan * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ********************************************************************************/ package functions.excels.exports; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddress; import models.Espece; import models.Groupe; import models.SousGroupe; import models.StadeSexe; import models.UTMS; import controllers.ajax.expert.requetes.calculs.MaillesParEspece; import functions.cartes.Carte; import functions.excels.Excel; public class MaillesParEspeceExcel extends Excel { public MaillesParEspeceExcel(Map<String, String> info, MaillesParEspece cb) throws IOException { ArrayList<Espece> especes = new ArrayList<Espece>(cb.mailles_par_espece.keySet()); Collections.sort(especes, new Comparator<Espece>() { @Override public int compare(Espece arg0, Espece arg1) { return arg0.espece_nom.compareTo(arg1.espece_nom); } }); Sheet sheet = wb.createSheet("Mailles par espce"); Espece espece = Espece.find.byId(Integer.parseInt(info.get("espece"))); SousGroupe sous_groupe = SousGroupe.find.byId(Integer.parseInt(info.get("sous_groupe"))); Groupe groupe = Groupe.find.byId(Integer.parseInt(info.get("groupe"))); StadeSexe stade_sexe = StadeSexe.find.byId(Integer.parseInt(info.get("stade"))); //Titre String date1 = info.get("jour1") + "/" + info.get("mois1") + "/" + info.get("annee1"); String date2 = info.get("jour2") + "/" + info.get("mois2") + "/" + info.get("annee2"); String titre = "Mailles par espce pour "; if (espece != null) titre += espece.espece_nom; else if (sous_groupe != null) titre += " les espces " + sous_groupe; else if (groupe != null) titre += " les espces " + groupe; if (stade_sexe != null) titre += " au stade " + stade_sexe; titre += crLf + "du " + date1 + " au " + date2; int page = 0; int ligne = 7; for (Espece especeATraiter : especes) { //Coller le logo en haut gauche this.collerLogo(page); HashMap<UTMS, Integer> observations = cb.mailles_par_espece.get(especeATraiter); Row row = sheet.createRow(ligne); sheet.createRow(ligne - 4).createCell(4).setCellValue(titre); sheet.addMergedRegion(new CellRangeAddress(ligne - 4, //first row (0-based) ligne - 3, //last row (0-based) 4, //first column (0-based) 8 //last column (0-based) )); row.createCell(0).setCellValue(especeATraiter.espece_nom); sheet.addMergedRegion(new CellRangeAddress(ligne, //first row (0-based) ligne, //last row (0-based) 0, //first column (0-based) 1 //last column (0-based) )); ligne++; row = sheet.createRow(ligne); row.createCell(0).setCellValue("Maille"); row.createCell(1).setCellValue("Nbre Obs."); ligne++; boolean ecritAGauche = true; for (UTMS utm : UTMS.findAll()) { int nbrObs = observations.get(utm); if (nbrObs != 0) { if (ecritAGauche) { row = sheet.createRow(ligne); row.createCell(0).setCellValue(utm.utm); row.createCell(1).setCellValue(nbrObs); ligne++; } else { row = sheet.getRow(ligne); row.createCell(2).setCellValue(utm.utm); row.createCell(3).setCellValue(nbrObs); ligne++; } if (ligne % LIGNES == (LIGNES - 2)) { if (ecritAGauche) { ecritAGauche = !ecritAGauche; ligne -= (LIGNES - 10); row = sheet.getRow(ligne); row.createCell(2).setCellValue("Maille"); row.createCell(3).setCellValue("Nbre Obs."); } else { ecritAGauche = !ecritAGauche; //On crit le pied de page row = sheet.createRow(ligne + 1); row.createCell(8).setCellValue("Page " + (page + 1)); //On fait une nouvelle page ligne += 10; page++; this.collerLogo(page); sheet.createRow(ligne - 4).createCell(4).setCellValue(titre); sheet.addMergedRegion(new CellRangeAddress(ligne - 4, //first row (0-based) ligne - 3, //last row (0-based) 4, //first column (0-based) 8 //last column (0-based) )); row = sheet.createRow(ligne); row.createCell(0).setCellValue(especeATraiter.espece_nom); sheet.addMergedRegion(new CellRangeAddress(ligne, //first row (0-based) ligne, //last row (0-based) 0, //first column (0-based) 1 //last column (0-based) )); ligne++; row = sheet.createRow(ligne); row.createCell(0).setCellValue("Maille"); row.createCell(1).setCellValue("Nbre Obs."); } } } } //On passe forcment la page suivante. while (ligne % LIGNES != 7) ligne++; //On crit le pied de page row = sheet.createRow(ligne - 8); row.createCell(8).setCellValue("Page " + (page + 1)); //On ajoute l'image de la carte ! Carte carte = new Carte(observations); this.pasteMap(carte, page); page++; } } }