@TopNS(prefix="", uri="http://schemas.openxmlformats.org/spreadsheetml/2006/main", value="styleSheet") public class Styles extends Object implements Storable
NumFmt、字体Font、填充Fill、边框Border、
垂直对齐Verticals和水平对齐Horizontals以及自动折行组成,样式存放在共享区域供多个工作表共用,
每个样式值都是由这7种值进行组合而来。全局样式库统管样式读写,添加样式时会查询当前样式是否已存在,如果存在则直接返回该样式在库中的索引值
否则添加到样式库末尾
本工具简化了样式设计,基础的4种样式由数组保存,单元格样式值由一个int值保存,
它可以极大压缩内存消耗和快速查找,但短板是可用的样式减少,最多只能包含256个格式化,64个字体,填充和边框,
对于日常的导出来说应该是够用的,复杂场景就需要考虑将int扩大到long
由于使用2进制位点保存各个样式,所以要修改样式时必须先清除原位点上的值然后再添加新样式,否则位点在进行“或”运行时将保留全部1
致使样式错乱,可以直接使用位运算来处理样式,也可以通过Styles.modify开头的方法来修改
Bit | Contents ------+--------- 0, 1 | 自动折行 1, 3 | 水平对齐 4, 2 | 垂直对齐 6, 6 | 边框 12, 6 | 填充 18, 6 | 字体 24. 8 | 格式化
| 限定符和类型 | 字段和说明 |
|---|---|
static int |
INDEX_BORDER |
static int |
INDEX_FILL |
static int |
INDEX_FONT |
static int |
INDEX_HORIZONTAL |
static int |
INDEX_NUMBER_FORMAT |
static int |
INDEX_VERTICAL |
static int |
INDEX_WRAP_TEXT |
Color[] |
indexedColors |
| 限定符和类型 | 方法和说明 |
|---|---|
int |
addBorder(Border border)
添加“边框”
返回样式值中“边框”部分的2进制值,拿到这个值后可以与其它部分值进行“或”运算以组成最终的样式值
|
void |
addDateFmtCache(int xf)
Append a date format back into cache
|
int |
addFill(Fill fill)
添加“填充”
返回样式值中“填充”部分的2进制值,拿到这个值后可以与其它部分值进行“或”运算以组成最终的样式值
|
int |
addFont(Font font)
添加“字体”
返回样式值中“字体”部分的2进制值,拿到这个值后可以与其它部分值进行“或”运算以组成最终的样式值
|
int |
addNumFmt(NumFmt numFmt)
添加“格式化”,对格式化串去重处理
返回样式值中“格式化”部分的2进制值,拿到这个值后可以与其它部分值进行“或”运算以组成最终的样式值
|
static int |
clearBorder(int style)
清除样式中的“边框”
|
static int |
clearFill(int style)
清除样式中的“填充”
|
static int |
clearFont(int style)
清除样式中的“字体”
|
static int |
clearHorizontal(int style)
清除样式中的“水平对齐”
|
static int |
clearNumFmt(int style)
清除样式中的“格式化”
|
static int |
clearVertical(int style)
清除样式中的“垂直对齐”
|
static int |
clearWrapText(int style)
清除样式中的“自动折行”
|
static Styles |
create()
Create a general style
|
static org.dom4j.Document |
createDocument() |
static int |
defaultCharBorderStyle() |
static int |
defaultCharStyle() |
static int |
defaultDoubleBorderStyle() |
static int |
defaultDoubleStyle() |
static int |
defaultIntBorderStyle() |
static int |
defaultIntStyle() |
static int |
defaultStringBorderStyle() |
static int |
defaultStringStyle() |
static Styles |
forReader()
Create a general style
|
static String |
getAttr(org.dom4j.Element element,
String attr)
Returns the attribute value from Element
|
Border |
getBorder(int style)
获取样式中的边框
|
Fill |
getFill(int style)
获取样式中的格式化
|
Font |
getFont(int style)
获取样式中的字体
|
int |
getHorizontal(int style)
获取样式中的水平对齐,参考范围
Horizontals |
NumFmt |
getNumFmt(int style)
获取样式中的格式化值
|
int |
getStyleByIndex(int styleIndex)
通过样式索引查询样式值
|
int |
getVertical(int style)
获取样式中的垂直对齐,参考范围
Verticals |
int |
getWrapText(int style)
获取样式中自动折行标记,标记为
1时表示自动折行 |
static boolean |
hasBorder(int style)
判断样式是否包含“边框"
|
static boolean |
hasFill(int style)
判断样式是否包含“填充"
|
static boolean |
hasFont(int style)
判断样式是否包含“字体"
|
static boolean |
hasHorizontal(int style)
判断样式是否包含“水平对齐"
|
static boolean |
hasNumFmt(int style)
判断样式是否包含“格式化"
|
static boolean |
hasVertical(int style)
判断样式是否包含“垂直对齐"
|
static boolean |
hasWrapText(int style)
判断样式是否自动折行
|
boolean |
isDate(int styleIndex)
Test the style is data format
|
static Styles |
load(InputStream is)
Load the style file from disk
|
int |
modifyBorder(int style,
Border newBorder)
修改“边框”样式
|
int |
modifyFill(int style,
Fill newFill)
修改“填充”样式
|
int |
modifyFont(int style,
Font newFont)
修改“字体”样式
|
int |
modifyHorizontal(int style,
int newHorizontal)
修改“水平对齐”样式
|
int |
modifyNumFmt(int style,
NumFmt newNumFmt)
修改“格式化”样式
|
int |
modifyVertical(int style,
int newVertical)
修改“垂直对齐”样式
|
int |
modifyWrapText(int style,
boolean newWrapText)
修改"自动折行"样式
|
int |
of(int s)
向全局样式库中添加样式,添加前会先查询是否已有相同样式,如果有则直接返回该样式在全局样式库中的索引值,
不存在则将该样式添加到样式库末尾
|
static int |
pack(int[] styles) |
static Color |
parseColor(org.dom4j.Element element)
Parse color tag
|
int |
size()
Returns the number of styles
|
static boolean |
testCodeIsDate(String code) |
static Color |
toColor(String v)
Converts a
String to an integer and returns the
specified opaque Color. |
static int[] |
unpack(int style) |
void |
writeTo(Path styleFile)
Write style to disk
|
public Color[] indexedColors
public static final int INDEX_NUMBER_FORMAT
public static final int INDEX_FONT
public static final int INDEX_FILL
public static final int INDEX_BORDER
public static final int INDEX_VERTICAL
public static final int INDEX_HORIZONTAL
public static final int INDEX_WRAP_TEXT
public int of(int s)
s - 样式值public int getStyleByIndex(int styleIndex)
styleIndex - 样式索引0 表示默认样式public int size()
public static Styles create()
public int modifyBorder(int style,
Border newBorder)
style - 原样式值newBorder - 新“边框”样式public int modifyNumFmt(int style,
NumFmt newNumFmt)
style - 原样式值newNumFmt - 新“格式化”样式public int modifyWrapText(int style,
boolean newWrapText)
style - 原样式值newWrapText - true: 自动折行public int modifyVertical(int style,
int newVertical)
style - 原样式值newVertical - 新“垂直对齐”样式,必须使用Verticals定义的静态值public int modifyHorizontal(int style,
int newHorizontal)
style - 原样式值newHorizontal - 新“水平对齐”样式,必须使用Horizontals定义的静态值public int modifyFill(int style,
Fill newFill)
style - 原样式值newFill - 新“填充”样式public int modifyFont(int style,
Font newFont)
style - 原样式值newFont - 新“字体”样式public static Styles forReader()
public static Styles load(InputStream is)
is - the style InputStreamStyles Objectpublic final int addNumFmt(NumFmt numFmt)
返回样式值中“格式化”部分的2进制值,拿到这个值后可以与其它部分值进行“或”运算以组成最终的样式值
numFmt - 格式化NumFmtpublic final int addFont(Font font)
返回样式值中“字体”部分的2进制值,拿到这个值后可以与其它部分值进行“或”运算以组成最终的样式值
font - 字体Fontpublic final int addFill(Fill fill)
返回样式值中“填充”部分的2进制值,拿到这个值后可以与其它部分值进行“或”运算以组成最终的样式值
fill - 填充Fontpublic final int addBorder(Border border)
返回样式值中“边框”部分的2进制值,拿到这个值后可以与其它部分值进行“或”运算以组成最终的样式值
border - 边框Borderpublic static int[] unpack(int style)
public static int pack(int[] styles)
public void writeTo(Path styleFile) throws IOException
writeTo 在接口中 StorablestyleFile - the storage pathIOException - if I/O error occurpublic static org.dom4j.Document createDocument()
public static int clearNumFmt(int style)
style - 样式值public static int clearFont(int style)
style - 样式值public static int clearFill(int style)
style - 样式值public static int clearBorder(int style)
style - 样式值public static int clearVertical(int style)
style - 样式值public static int clearHorizontal(int style)
style - 样式值public static int clearWrapText(int style)
style - 样式值public static int defaultCharBorderStyle()
public static int defaultStringBorderStyle()
public static int defaultIntBorderStyle()
public static int defaultDoubleBorderStyle()
public static int defaultCharStyle()
public static int defaultStringStyle()
public static int defaultIntStyle()
public static int defaultDoubleStyle()
public static boolean hasNumFmt(int style)
style - 样式值public static boolean hasFont(int style)
style - 样式值public static boolean hasFill(int style)
style - 样式值public static boolean hasBorder(int style)
style - 样式值public static boolean hasVertical(int style)
style - 样式值public static boolean hasHorizontal(int style)
style - 样式值public static boolean hasWrapText(int style)
style - 样式值public NumFmt getNumFmt(int style)
style - 样式值nullpublic Fill getFill(int style)
style - 样式值nullpublic Font getFont(int style)
style - 样式值public Border getBorder(int style)
style - 样式值nullpublic int getVertical(int style)
Verticalsstyle - 样式值public int getHorizontal(int style)
Horizontalsstyle - 样式值public int getWrapText(int style)
1时表示自动折行style - 样式值public static String getAttr(org.dom4j.Element element, String attr)
element - current elementattr - the attr namepublic static Color parseColor(org.dom4j.Element element)
element - color tagpublic boolean isDate(int styleIndex)
styleIndex - the style indexpublic static boolean testCodeIsDate(String code)
public void addDateFmtCache(int xf)
xf - the XFRecord idpublic static Color toColor(String v)
String to an integer and returns the
specified opaque Color. This method handles string
formats that are used to represent octal and hexadecimal numbers.v - hexadecimal numbers or color nameColor object.IllegalArgumentException - if convert failed.Copyright © 2025. All rights reserved.