/** * Метод проверяет наличие в рабочей книге зарегистрированного фонта с указанными характеристиками * и если он отсутствует то регистрирует его. * * @param wb рабочая книга в которой должен быть зарегистрирован требуемый фонт. * @param font характеристики требуемого фонта. * @return зарегистрированный в рабочей книге фонт с требуемыми характеристиками. */ public static HSSFFont ensureFontExists(final HSSFWorkbook wb, final Font font) { final short colorId = font.getColor() != null ? font.getColor().getId() : 0; HSSFFont f = wb.findFont( font.getBoldWeight(), colorId, font.getFontHeight(), font.getFontName(), font.isItalic(), font.isStrikeout(), font.getTypeOffset(), font.getUnderline()); if (f == null) { f = wb.createFont(); f.setBoldweight(font.getBoldWeight()); f.setCharSet(font.getCharSet()); f.setColor(colorId); f.setFontHeight(font.getFontHeight()); f.setFontName(font.getFontName()); f.setItalic(font.isItalic()); f.setStrikeout(font.isStrikeout()); f.setTypeOffset(font.getTypeOffset()); f.setUnderline(font.getUnderline()); } return f; }
/** * Копирует все свойства исходного фонта в целевой. И исходный и целевой фонты должны относиться к * одному и тому же документу 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; }