最近在项目的开发中使用到了apache poi,该组件可以让我们方便的操作excell,该工具非常容易上手,但使用过程中也发现了一些问题,就是当你操作excell文档为其设置颜色时,该文档所能设的颜色最多只能是56种(poi自身提供的系统颜色,例如红,黄等,我们可以通过对已有的色块进行调色达到我们自定义颜色的目的,在PaletteRecord类里面初始化),也就是说poi加载到内存之后,它所维护的只有56块色块,且系统只有一份,所以在一个excell生成过程中,它必须锁定该所有的调色块,待该excell文件生成之后,才能将该资源释放,供下个线程使用,而且在设置excell颜色过程中我们必须标识哪些调色块已经使用,哪些没用,这样我们才能防止调好的背景颜色被覆盖,在poi中自定义颜色一般通过HSSFPalette(调色板)对象调用setColorAtIndex(short index, byte red, byte green, byte blue)方法,
/**
* @param 设置颜色块的索引,从 0x8 到 0x40
* @param red 红色, between 0 and 255 inclusive
* @param green 绿色, between 0 and 255 inclusive
* @param blue 蓝色, between 0 and 255 inclusive
*/
public void setColorAtIndex(short index, byte red, byte green, byte blue)
{
_palette.setColor(index, red, green, blue);
}
通过该方法对调色块进行调色,调完色后,则该调色块对应的颜色就是通过最新的rgb值调出来的,下一步,例如你要设某单元格的背景色,你只要调用样式style.setFillForegroundColor(index)就可以了,在控制调色块的使用情况时可以采用List<Map>的集合来实现,通过Map<索引,使用情况>来标识一个色块的使用情况,
public class ColorIncreaseUtil {
public static int colorindex;
public static Map<String, Integer> maps;
/**
* 开始颜色索引
*/
public static void beginColorIndex() {
maps = new HashMap<String, Integer>();
for (int i = 8; i <= 64; i++) {
maps.put(i + "", 0);
}
colorindex = 8;
}
/**
* 颜色索引值增加
*/
public static short getColorIndexIncrease() {
if (colorindex > 64)
return 0;
colorindex = colorindex + 1;
while (maps.get("" + (colorindex)).intValue() == 1) {
colorindex = colorindex + 1;
}
return (short) colorindex;
}
/**
* 设置摸个颜色板已经占用
*
* @param index
*/
public static void setFlag(short index) {
maps.put(index + "", 1);
}
通过这样设置,我们就可以方便的定义我们的颜色了。
分享到:
相关推荐
java poi自定义导出功能.rar
POI设置Cell背景色编码与实际颜色对照表
NULL 博文链接:https://orange5458.iteye.com/blog/1897086
Java Poi 导出excel(支持各种设置字体、颜色、垂直居中)
NULL 博文链接:https://hbxflihua.iteye.com/blog/2376676
color org.apache.poi.hssf.util.HSSFColor$GREY_80_PERCENT@1aadbf7 color org.apache.poi.hssf.util.HSSFColor$INDIGO@4f4458 color org.apache.poi.hssf.util.HSSFColor$PLUM@100c56 color org.apache.poi....
POI设置单元格颜色时总是很多颜色不知道如何预览,这个文档中记录了POI颜色的枚举以及对应的严策参照
POI 中 XssfCellStyle 的 short数值对应颜色对照表
资源描述了poi对于word的操作,poi合并word文档,poi设置word页码,内含maven依赖文档和完整代码,是一个完整工程,打开即可用
POI导出Word包含页眉 页脚的设置,标题的设置以及显示显示设置,包括POI操作Word完整的jar包
POI中设置Excel单元格格式
java使用poi在excel单元格添加超链接,设置字体颜色(csdn)————程序
关于POI的打印设置知识.pdf
poi颜色对照表.xls
此文件包含 poi3.2 以及npoi颜色对照,方便excel导出及其单元格背景颜色更改。
此demo不需要借助其他插件,只需要加入poi相关的jar即可生成excel表格数据曲线,附件是源码
采用该jar包轻松实现excel的生成。自定义excel的格式,代码量相对比较简洁 查看如何实现excel网址:https://blog.csdn.net/echohuangshihuxue/article/details/81837771
POI cell 设置
使用POI 对 图片插入 目录插入 不用模板文件。 绝对好使的。
使用Poi创建Excel文档,Poi颜色表可以用来调色。