Java tutorial
/* * iteraplan is an IT Governance web application developed by iteratec, GmbH * Copyright (C) 2004 - 2014 iteratec, GmbH * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License version 3 as published by * the Free Software Foundation with the addition of the following permission * added to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED * WORK IN WHICH THE COPYRIGHT IS OWNED BY ITERATEC, ITERATEC DISCLAIMS THE * WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License * along with this program; if not, see http://www.gnu.org/licenses or write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301 USA. * * You can contact iteratec GmbH headquarters at Inselkammerstr. 4 * 82008 Munich - Unterhaching, Germany, or at email address info@iteratec.de. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License * version 3, these Appropriate Legal Notices must retain the display of the * "iteraplan" logo. If the display of the logo is not reasonably * feasible for technical reasons, the Appropriate Legal Notices must display * the words "Powered by iteraplan". */ package de.iteratec.iteraplan.businesslogic.exchange.elasticExcel.export.template; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFPalette; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFColor; import com.google.common.collect.Maps; /** * Generates the styles required for the Excel template. All the styles defined in {@link IteraExcelStyle} * will be generated by this class. */ public final class ExcelStylesCreator { private static final short EXCEL_HEADER_FONT_HEIGHT = 10; private static final String EXCEL_HEADER_FONT_NAME = "Arial"; /** Default constructor. */ private ExcelStylesCreator() { // prevents class instances } /** * Generates the Excel styles. It is ensured, that all styles names defined in * {@link IteraExcelStyle} enum class will be contained in returned map. * * @param wb the workbook to create the styles for * @return the map containing the Excel styles */ public static Map<IteraExcelStyle, CellStyle> createStyles(Workbook wb) { Map<IteraExcelStyle, CellStyle> styles = Maps.newEnumMap(IteraExcelStyle.class); CellStyle headerStyle = getHeaderStyle(wb); styles.put(IteraExcelStyle.HEADER, headerStyle); CellStyle dataStyle = getDataStyle(wb); styles.put(IteraExcelStyle.DATA, dataStyle); CellStyle dataHiddenStyle = getDataHiddenStyle(wb, dataStyle); styles.put(IteraExcelStyle.DATA_HIDDEN, dataHiddenStyle); CellStyle dateStyle = getDateStyle(wb, dataStyle); styles.put(IteraExcelStyle.DATA_DATE, dateStyle); CellStyle hyperlinkStyle = getHyperlinkStyle(wb); styles.put(IteraExcelStyle.HYPERLINK, hyperlinkStyle); return styles; } private static CellStyle getHeaderStyle(Workbook workbook) { CellStyle style = workbook.createCellStyle(); style.setFillPattern(CellStyle.SOLID_FOREGROUND); setCustomVioletForegroundColor(workbook, style); Font font = workbook.createFont(); font.setColor(IndexedColors.WHITE.getIndex()); font.setBoldweight(Font.BOLDWEIGHT_BOLD); font.setFontHeightInPoints(EXCEL_HEADER_FONT_HEIGHT); font.setFontName(EXCEL_HEADER_FONT_NAME); style.setFont(font); return style; } private static void setCustomVioletForegroundColor(Workbook wb, CellStyle style) { if (wb instanceof HSSFWorkbook) { HSSFPalette palette = ((HSSFWorkbook) wb).getCustomPalette(); palette.setColorAtIndex(HSSFColor.VIOLET.index, (byte) 169, (byte) 33, (byte) 142); style.setFillForegroundColor(IndexedColors.VIOLET.getIndex()); } else { XSSFColor xssfColor = new XSSFColor(new java.awt.Color(169, 33, 142)); ((XSSFCellStyle) style).setFillForegroundColor(xssfColor); } } private static CellStyle getDataStyle(Workbook workbook) { CellStyle style = workbook.createCellStyle(); style.setBorderRight(CellStyle.BORDER_THIN); style.setRightBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderLeft(CellStyle.BORDER_THIN); style.setLeftBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderTop(CellStyle.BORDER_THIN); style.setTopBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderBottom(CellStyle.BORDER_THIN); style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); return style; } private static CellStyle getDataHiddenStyle(Workbook workbook, CellStyle dataStyle) { CellStyle style = workbook.createCellStyle(); style.cloneStyleFrom(dataStyle); style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); style.setFillPattern(CellStyle.SOLID_FOREGROUND); return style; } private static CellStyle getDateStyle(Workbook workbook, CellStyle dataStyle) { CellStyle cellStyle = workbook.createCellStyle(); cellStyle.cloneStyleFrom(dataStyle); cellStyle.setDataFormat(workbook.getCreationHelper().createDataFormat().getFormat("m/d/yy")); return cellStyle; } private static CellStyle getHyperlinkStyle(Workbook workbook) { CellStyle hyperlinkStyle = workbook.createCellStyle(); Font hyperlinkFont = workbook.createFont(); hyperlinkFont.setUnderline(Font.U_SINGLE); hyperlinkFont.setColor(IndexedColors.BLUE.getIndex()); hyperlinkStyle.setFont(hyperlinkFont); return hyperlinkStyle; } }