forked from fanruan/easyexcel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
4.2 KiB
136 lines
4.2 KiB
package com.alibaba.excel.metadata.property; |
|
|
|
import com.alibaba.excel.annotation.write.style.ContentFontStyle; |
|
import com.alibaba.excel.annotation.write.style.HeadFontStyle; |
|
import com.alibaba.excel.util.StringUtils; |
|
|
|
import lombok.Data; |
|
import org.apache.poi.common.usermodel.fonts.FontCharset; |
|
import org.apache.poi.hssf.usermodel.HSSFPalette; |
|
import org.apache.poi.ss.usermodel.Font; |
|
import org.apache.poi.ss.usermodel.IndexedColors; |
|
|
|
/** |
|
* Configuration from annotations |
|
* |
|
* @author Jiaju Zhuang |
|
*/ |
|
@Data |
|
public class FontProperty { |
|
/** |
|
* The name for the font (i.e. Arial) |
|
*/ |
|
private String fontName; |
|
/** |
|
* Height in the familiar unit of measure - points |
|
*/ |
|
private Short fontHeightInPoints; |
|
/** |
|
* Whether to use italics or not |
|
*/ |
|
private Boolean italic; |
|
/** |
|
* Whether to use a strikeout horizontal line through the text or not |
|
*/ |
|
private Boolean strikeout; |
|
/** |
|
* The color for the font |
|
* |
|
* @see Font#COLOR_NORMAL |
|
* @see Font#COLOR_RED |
|
* @see HSSFPalette#getColor(short) |
|
* @see IndexedColors |
|
*/ |
|
private Short color; |
|
/** |
|
* Set normal, super or subscript. |
|
* |
|
* @see Font#SS_NONE |
|
* @see Font#SS_SUPER |
|
* @see Font#SS_SUB |
|
*/ |
|
private Short typeOffset; |
|
/** |
|
* set type of text underlining to use |
|
* |
|
* @see Font#U_NONE |
|
* @see Font#U_SINGLE |
|
* @see Font#U_DOUBLE |
|
* @see Font#U_SINGLE_ACCOUNTING |
|
* @see Font#U_DOUBLE_ACCOUNTING |
|
*/ |
|
|
|
private Byte underline; |
|
/** |
|
* Set character-set to use. |
|
* |
|
* @see FontCharset |
|
* @see Font#ANSI_CHARSET |
|
* @see Font#DEFAULT_CHARSET |
|
* @see Font#SYMBOL_CHARSET |
|
*/ |
|
private Integer charset; |
|
/** |
|
* Bold |
|
*/ |
|
private Boolean bold; |
|
|
|
public static FontProperty build(HeadFontStyle headFontStyle) { |
|
if (headFontStyle == null) { |
|
return null; |
|
} |
|
FontProperty styleProperty = new FontProperty(); |
|
if (StringUtils.isNotBlank(headFontStyle.fontName())) { |
|
styleProperty.setFontName(headFontStyle.fontName()); |
|
} |
|
if (headFontStyle.fontHeightInPoints() >= 0) { |
|
styleProperty.setFontHeightInPoints(headFontStyle.fontHeightInPoints()); |
|
} |
|
styleProperty.setItalic(headFontStyle.italic().getBooleanValue()); |
|
styleProperty.setStrikeout(headFontStyle.strikeout().getBooleanValue()); |
|
if (headFontStyle.color() >= 0) { |
|
styleProperty.setColor(headFontStyle.color()); |
|
} |
|
if (headFontStyle.typeOffset() >= 0) { |
|
styleProperty.setTypeOffset(headFontStyle.typeOffset()); |
|
} |
|
if (headFontStyle.underline() >= 0) { |
|
styleProperty.setUnderline(headFontStyle.underline()); |
|
} |
|
if (headFontStyle.charset() >= 0) { |
|
styleProperty.setCharset(headFontStyle.charset()); |
|
} |
|
styleProperty.setBold(headFontStyle.bold().getBooleanValue()); |
|
return styleProperty; |
|
} |
|
|
|
public static FontProperty build(ContentFontStyle contentFontStyle) { |
|
if (contentFontStyle == null) { |
|
return null; |
|
} |
|
FontProperty styleProperty = new FontProperty(); |
|
if (StringUtils.isNotBlank(contentFontStyle.fontName())) { |
|
styleProperty.setFontName(contentFontStyle.fontName()); |
|
} |
|
if (contentFontStyle.fontHeightInPoints() >= 0) { |
|
styleProperty.setFontHeightInPoints(contentFontStyle.fontHeightInPoints()); |
|
} |
|
styleProperty.setItalic(contentFontStyle.italic().getBooleanValue()); |
|
styleProperty.setStrikeout(contentFontStyle.strikeout().getBooleanValue()); |
|
if (contentFontStyle.color() >= 0) { |
|
styleProperty.setColor(contentFontStyle.color()); |
|
} |
|
if (contentFontStyle.typeOffset() >= 0) { |
|
styleProperty.setTypeOffset(contentFontStyle.typeOffset()); |
|
} |
|
if (contentFontStyle.underline() >= 0) { |
|
styleProperty.setUnderline(contentFontStyle.underline()); |
|
} |
|
if (contentFontStyle.charset() >= 0) { |
|
styleProperty.setCharset(contentFontStyle.charset()); |
|
} |
|
styleProperty.setBold(contentFontStyle.bold().getBooleanValue()); |
|
return styleProperty; |
|
} |
|
|
|
}
|
|
|