package be.mentoringsystems.merke.presentation.excel; import be.mentoringsystems.merke.model.db.Category; import be.mentoringsystems.merke.model.db.Vendor; import be.mentoringsystems.merke.model.db.Vendorstall; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.FillPatternType; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; import org.springframework.web.servlet.view.document.AbstractXlsxView; /** * * @author anthonyarents */ public class Vendors extends AbstractXlsxView{ private void styledCell(Cell cell, String value, CellStyle style) { cell.setCellValue(value); cell.setCellStyle(style); } @Override protected void buildExcelDocument(Map map, Workbook wrkbk, HttpServletRequest hsr, HttpServletResponse hsr1) throws Exception { @SuppressWarnings("unchecked") final List data = (List) map.get("data"); String documentName = "Overzicht standhouders"; String documentTitle = "Export overzicht standhouders "; final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm"); hsr1.setHeader("Content-Disposition", "attachment; filename=\"" + documentName + ".xlsx\""); final CellStyle headerStyle = wrkbk.createCellStyle(); headerStyle.setFillForegroundColor(IndexedColors.PALE_BLUE .getIndex()); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); final Sheet sheet = wrkbk.createSheet(); final Row titlerow = sheet.createRow(0); sheet.addMergedRegion(new CellRangeAddress(0,0,0,8)); titlerow.createCell(0).setCellValue(documentTitle + sdf.format(new Date())); final Row headerrow = sheet.createRow(1); styledCell(headerrow.createCell(0), "Nr.", headerStyle); styledCell(headerrow.createCell(1), "Voornaam", headerStyle); styledCell(headerrow.createCell(2), "Naam", headerStyle); styledCell(headerrow.createCell(3), "Bedrijf", headerStyle); styledCell(headerrow.createCell(4), "Tel", headerStyle); styledCell(headerrow.createCell(5), "E-mailadres", headerStyle); styledCell(headerrow.createCell(6), "Product", headerStyle); styledCell(headerrow.createCell(7), "Ingeschreven sinds", headerStyle); styledCell(headerrow.createCell(8), "Opmerking", headerStyle); int rowcounter = 0; int rowoffset = 2; for(Vendor vendor : data) { final Row row = sheet.createRow(rowcounter + rowoffset); rowcounter++; row.createCell(0).setCellValue(rowcounter); row.createCell(1).setCellValue(vendor.getFirstname()); row.createCell(2).setCellValue(vendor.getLastname()); row.createCell(3).setCellValue(vendor.getCompanyName()); row.createCell(4).setCellValue(vendor.getTelephonenumber()); row.createCell(5).setCellValue(vendor.getEmail()); List categories = new ArrayList(); for(Vendorstall stall : vendor.getVendorstalls()) { for(Category cat : stall.getCategories()) { if(!categories.contains(cat)) { categories.add(cat); } } } StringBuilder categoryString = new StringBuilder(); for(int i = 0; i < categories.size(); i++) { if(i > 0) { categoryString.append(", "); } categoryString.append(categories.get(i).getName()); } row.createCell(6).setCellValue(categoryString.toString()); row.createCell(7).setCellValue(sdf.format(vendor.getCreatedOn())); row.createCell(8).setCellValue("Nee"); } sheet.autoSizeColumn(0, false); sheet.autoSizeColumn(1, false); sheet.autoSizeColumn(2, false); sheet.autoSizeColumn(3, false); sheet.autoSizeColumn(4, false); sheet.autoSizeColumn(5, false); sheet.autoSizeColumn(6, false); sheet.autoSizeColumn(7, false); sheet.autoSizeColumn(8, false); } }