public FontVO(HSSFFont font) { fontName = font.getFontName(); fontHeight = font.getFontHeight(); boldweight = font.getBoldweight(); italic = font.getItalic(); strikeout = font.getStrikeout(); typeOffset = font.getTypeOffset(); underline = font.getUnderline(); color = font.getColor(); }
/** * Копирует все свойства исходного фонта в целевой. И исходный и целевой фонты должны относиться к * одному и тому же документу Excel. Данный метод используется для того чтобы в последствии * поменять в новом фонте один или несколько свойств не затрагивая при этом свойства исходного * фонта. * * @param wb документ Excel. * @param src фонт взятый в качестве шаблона. * @return созданная в этом же документе копия шрифта. */ public static HSSFFont copyFont(final HSSFWorkbook wb, final HSSFFont src) { final HSSFFont dst = wb.createFont(); dst.setBoldweight(src.getBoldweight()); dst.setCharSet(src.getCharSet()); dst.setColor(src.getColor()); dst.setFontHeight(src.getFontHeight()); dst.setFontName(src.getFontName()); dst.setItalic(src.getItalic()); dst.setStrikeout(src.getStrikeout()); dst.setTypeOffset(src.getTypeOffset()); dst.setUnderline(src.getUnderline()); return dst; }
/** * Находит или создает новый стиль на основе указанного в аргументе исходного стиля в котором были * изменены цвета шрифта и/или фона. Информация о всех созданных данным методом стилях сохраняется * в контексте выполнения в пространстве имен {@link * org.echosoft.framework.reports.model.el.ELContext.Scope#VAR}. * * @param ectx контекст выполнения. Используется для получения информации о текущей ячейке и для * кэширования информации о вновь созданных в документе стилях. * @param originalStyle исходный стиль, который должен послужить основой для создаваемого стиля. * @param color Определяет цвет шрифта в данной ячейке. Аргумент содержит идентификатор цвета в * документе или <code>-1</code> если цвет шрифта должен остаться без изменений. * @param bgColor Определяет цвет фона в данной ячейке. Аргумент содержит идентификатор цвета в * документе или <code>-1</code> если цвет шрифта должен остаться без изменений. * @return копия оригинального стиля указанной ячейки с измененными цветами фона и шрифта. Этот * стиль уже зарегистрирован в рабочей книге. */ public static HSSFCellStyle getAltColorStyle( final ExecutionContext ectx, final HSSFCellStyle originalStyle, final int color, final int bgColor) { final String styleName = "alt.color.style:" + originalStyle.getIndex() + ':' + color + ':' + bgColor; HSSFCellStyle style = (HSSFCellStyle) ectx.elctx.getVariables().get(styleName); if (style == null) { style = POIUtils.copyStyle(ectx.wb, originalStyle); if (color >= 0) { final HSSFFont of = ectx.wb.getFontAt(originalStyle.getFontIndex()); HSSFFont nf = ectx.wb.findFont( of.getBoldweight(), (short) color, of.getFontHeight(), of.getFontName(), of.getItalic(), of.getStrikeout(), of.getTypeOffset(), of.getUnderline()); if (nf == null) { nf = POIUtils.copyFont(ectx.wb, of); nf.setColor((short) color); } style.setFont(nf); } if (bgColor >= 0) { style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); style.setFillForegroundColor((short) bgColor); } ectx.elctx.getVariables().put(styleName, style); } return style; }