PlaqueAttribueeLine.COMP_NOM_PRENOM);
final HSSFWorkbook wb = new HSSFWorkbook();
int sheetIndex = -1;
final HSSFFont font = wb.createFont();
font.setFontHeightInPoints((short) 12);
font.setFontName("Arial");
final HSSFCellStyle style = wb.createCellStyle();
style.setFont(font);
for (CategorieParticipante catPart : categoriesParticipantes)
{
int categorySheetIndex = -1;
Collection<PlaqueAttribueeLine> plaquesCategorie = selectStr
.getResult(catPart.getCategorie(), plaques);
plaquesCategorie = orderStr.getResult(plaquesCategorie);
final Iterator<PlaqueAttribueeLine> itLine = plaquesCategorie
.iterator();
while (itLine.hasNext())
{
final HSSFSheet sheet = newSheet(wb, catPart
.getCategorie(), ++categorySheetIndex);
sheetIndex++;
sheet.getPrintSetup().setLandscape(true);
boolean emptySheet = true;
for (short j = 0; j < ListePlaquePage.COLONNES_PAR_PAGE; j++)
{
for (short k = 0; k < ListePlaquePage.LIGNES_PAR_PAGE; k++)
{
if (itLine.hasNext())
{
final PlaqueAttribueeLine line = itLine
.next();
//Seules les feuilles où il y a au moins un nom
//sont incluses dans le classeur.
if (line.getNomPrenom() != null
&& !line.getNomPrenom().equals(""))
{
emptySheet = false;
}
final HSSFRow row = sheet
.createRow(getIndexLigne(k));
HSSFCell cell = row
.createCell(getIndexColonne(
j,
ListePlaquePage.INDEX_PLAQUE));
cell.setCellValue(new HSSFRichTextString(
line.getPlaque()));
cell.setCellStyle(style);
cell = row.createCell(getIndexColonne(j,
ListePlaquePage.INDEX_NOM));
cell.setCellValue(new HSSFRichTextString(
line.getNomPrenom()));
cell.setCellStyle(style);
cell = row.createCell(getIndexColonne(j,
ListePlaquePage.INDEX_COMMENTAIRE));
cell.setCellValue(new HSSFRichTextString(
line.getCommentaire()));
cell.setCellStyle(style);
}
else
{
//Aucune ligne à écrire... Terminer la boucle.
break;
}
}
}
//Enlever la feuille si elle est vide.
if (emptySheet)
{
wb.removeSheetAt(sheetIndex--);
}
}
}
try
{
File file = File.createTempFile("excel", null);
FileOutputStream fileOut = new FileOutputStream(file);
wb.write(fileOut);
fileOut.close();
return new FileResourceStream(file);
}
catch (FileNotFoundException e)
{
throw new SystemeException(e);
}
catch (IOException e)
{
throw new SystemeException(e);
}
}
@Override
protected void setHeaders(WebResponse response)
{
super.setHeaders(response);
response.setAttachmentHeader("Plaques - "
+ saisonReload.getAnnee().toString() + ".xls");
}
private HSSFSheet newSheet(final HSSFWorkbook wb,
final Categorie categorie, final int page)
{
final HSSFSheet sheet = wb.createSheet(categorie
.getCodeCategorie()
+ " " + categorie.getSexe() + "(" + page + ")");
sheet.setColumnWidth((short) 0, (short) 2500);
sheet.setColumnWidth((short) 1, (short) 8500);
sheet.setColumnWidth((short) 2, (short) 3500);
sheet.setColumnWidth((short) 3, (short) 1000);
sheet.setColumnWidth((short) 4, (short) 2500);
sheet.setColumnWidth((short) 5, (short) 8500);
sheet.setColumnWidth((short) 6, (short) 3500);
// --------- En-tête -----------
HSSFFont font = wb.createFont();
font.setFontHeightInPoints((short) 36);
font.setFontName("Arial");
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
HSSFCellStyle style = wb.createCellStyle();
style.setFont(font);
HSSFRow row = sheet.createRow((short) 0);
HSSFCell cell = row.createCell((short) 0);
cell.setCellValue(new HSSFRichTextString(categorie
.getDiscipline().getNom()));
sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) 1));
cell = row.createCell((short) 2);
cell.setCellValue(new HSSFRichTextString(categorie.getNom()));
sheet.addMergedRegion(new Region(0, (short) 2, 0, (short) 5));
cell = row.createCell((short) 6);
cell.setCellValue(new HSSFRichTextString(categorie.getSexe()));
HSSFUtils.applyStyle(row, style);
// ------- Séparateur -----------
row = sheet.createRow((short) 1);
row.setHeightInPoints(new Float(7.5));
row = sheet.createRow((short) 2);
for (short i = 0; i < ListePlaquePage.COLONNES_PAR_PAGE; i++)
{
cell = row.createCell(getIndexColonne(i,
ListePlaquePage.INDEX_PLAQUE));
cell.setCellValue(new HSSFRichTextString("PLAQUE"));
cell = row.createCell(getIndexColonne(i,
ListePlaquePage.INDEX_NOM));
cell.setCellValue(new HSSFRichTextString("NOM, PRÉNOM"));
cell = row.createCell(getIndexColonne(i,
ListePlaquePage.INDEX_COMMENTAIRE));
cell.setCellValue(new HSSFRichTextString(""));
}
font = wb.createFont();
font.setFontHeightInPoints((short) 10);
font.setFontName("Arial");
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
style = wb.createCellStyle();
style.setFont(font);
HSSFUtils.applyStyle(row, style);