/******************************************************************************* * Copyright (c) 2012 Dmitry Tikhomirov. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Dmitry Tikhomirov - initial API and implementation ******************************************************************************/ package org.opensheet.server.exports; import jxl.format.Colour; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import org.opensheet.shared.model.Assignment; import org.springframework.web.servlet.view.document.AbstractJExcelView; public class TimesheetToXlsView extends AbstractJExcelView{ @SuppressWarnings("unchecked") @Override protected void buildExcelDocument(@SuppressWarnings("rawtypes") Map model, WritableWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception { response.setContentType("application/vnd.ms-excel"); response.setHeader ("Content-Disposition", "attachment; filename=timesheet.xls"); Map<Assignment,List<Integer>> hours = (Map<Assignment,List<Integer>>) model.get("Hours"); HashMap<Integer, Boolean> getHolidaysMap = (HashMap<Integer, Boolean>) model.get("holidays"); Integer days = getHolidaysMap.size(); getHolidaysMap.put(0, false); WritableSheet sheet = workbook.createSheet("Timesheet Export", 0); WritableCellFormat format = new WritableCellFormat(); Colour orange = Colour.ORANGE; format.setBackground(orange); sheet.addCell(new Label(0, 0, "Assignment")); sheet.addCell(new Label(1, 0, "Hours summ")); sheet.setColumnView(0, 25); sheet.setColumnView(1, 5); for(Integer i=1;i<=days;i++){ int step = i; step++; if(getHolidaysMap.get(i) == true){ sheet.addCell(new jxl.write.Number(step, 0,i,format)); }else{ sheet.addCell(new jxl.write.Number(step, 0,i)); } sheet.setColumnView(step, 3); } int rowNum = 1; for(Map.Entry<Assignment, List<Integer>> kv: hours.entrySet()){ Assignment assignment = kv.getKey(); if(assignment.getLevel() == 0){ sheet.addCell(new Label(0, rowNum,assignment.getName())); }else{ sheet.addCell(new Label(0, rowNum," " + assignment.getName())); } List<Integer> list = kv.getValue(); for(Integer i=0;i<=days;i++){ int step = i; step++; if(list.get(i) != 0){ if(getHolidaysMap.get(i) == true){ sheet.addCell(new jxl.write.Number(step, rowNum,list.get(i),format)); }else{ sheet.addCell(new jxl.write.Number(step, rowNum,list.get(i))); } }else{ if(getHolidaysMap.get(i) == true){ sheet.addCell(new Label(step, rowNum,"",format)); }else{ sheet.addCell(new Label(step, rowNum,"")); } } } rowNum++; } } }