用POI绘制EXCEL时设置背景颜色,颜色需要上百种时候的问题

forgottenp 2011-01-30 11:00:07
因为我需要表格的背景颜色十分多种,甚至可能上百中,所以仅仅用自定义的HSSFColor.BLACK这些不够.
现在问题出来了
一般自定义颜色的方法是
HSSFPalette palette = wb.getCustomPalette();
palette.setColorAtIndex(HSSFColor.RED.index, (byte) 153, (byte) 0, (byte) 0);
然后style.setFillForegroundColor(HSSFColor.RED.index);

但是,类HSSFPalette的setColorAtIndex中第一个变量是short,也就是HSSFColor.BLACK这类系统自定义的颜色.这样就限定了我只能用系统的几十个颜色(虽然某个颜色所对应的RGB可以换);

而且,HSSFCellStyle的setFillForegroundColor等两个设置背景颜色的方法的变量也是short的....

请问有人只对怎么才能使Cell的背景颜色上百种吗?而并不只是系统限死的48种(注意,这里限制的是因为setColorAtIndex只能对系统的48个全局变量重新赋值)


请问有人能够帮忙指导一下吗?谢谢

PS:咋公司放假就这么遵守国家规定呢=.=NND 7天
...全文
2379 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
forgottenp 2011-02-21
  • 打赏
  • 举报
回复
恩,试过了,用XSSF是可以的,不过,哎,当颜色多的时候,色差都不知道怎么分别它....
相对于HSSF的index是8~64,XSSF的index可以自己设.所以颜色的数目可以灰常灰常多.只有你真的能够分出来

因为我是需要用来做广告投放的排期表.譬如销售打开这3个月的排期表.然后各个位置某几天分别不同的客户投放广告.各个广告一种颜色的背景+客户的名称.....
2012 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 forgottenp 的回复:]

引用 8 楼 iuingeng 的回复:
楼主是不是想设置比excel单元格填充颜色面板上更多的颜色,但受excel系统限制,只能设定并保存默认数量的颜色。好想比较困难。。。


对,默认只能56种颜色(索引为8~64),这56种所指的颜色你可以变化,但是反正你一个wb最多只能有56种颜色......

现在看得貌似可以用XSSF解决(原来用的是HSSF,他们的区别是XSSF是Off……
[/Quote]

嗯。期待楼主的尝试结果~不过想问下何种情况下会产生这种需求
forgottenp 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 viszl 的回复:]
HSSFWorkbook wb=new HSSFWorkbook();
HSSFColor color = wb.getCustomPalette().findColor(byte red,
byte green,
byte blue)


red - the RGB red component, between 0 and 255 inclusive
green - the……
[/Quote]

你这个,如果这个wb没有这种颜色,会返回null的,它找颜色也是在索引8~64找的...有个方法addColor也是在8~64看看其是否为空,空就addColor..都满就抛出异常...
不知道是我不会用还是啥..反正我觉得addColor这个函数很废..因为系统都预置了8~64的颜色一般都不为空的....没看它的源码以为可以颜色数目无上限空欢喜..
forgottenp 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 iuingeng 的回复:]
楼主是不是想设置比excel单元格填充颜色面板上更多的颜色,但受excel系统限制,只能设定并保存默认数量的颜色。好想比较困难。。。
[/Quote]

对,默认只能56种颜色(索引为8~64),这56种所指的颜色你可以变化,但是反正你一个wb最多只能有56种颜色......

现在看得貌似可以用XSSF解决(原来用的是HSSF,他们的区别是XSSF是Office2007的,而HSSF是旧版的通用一点...)正在尝试,...
loveofmylife 2011-02-10
  • 打赏
  • 举报
回复
HSSFWorkbook wb=new HSSFWorkbook();
HSSFColor color = wb.getCustomPalette().findColor(byte red,
byte green,
byte blue)


red - the RGB red component, between 0 and 255 inclusive
green - the RGB green component, between 0 and 255 inclusive
blue - the RGB blue component, between 0 and 255 inclusive
2012 2011-02-10
  • 打赏
  • 举报
回复
楼主是不是想设置比excel单元格填充颜色面板上更多的颜色,但受excel系统限制,只能设定并保存默认数量的颜色。好想比较困难。。。
forgottenp 2011-02-09
  • 打赏
  • 举报
回复
过年回来顶一下,有人指导一下吗
seablue001 2011-02-09
  • 打赏
  • 举报
回复
我顏色可以隨機讀取不同的RGB值,得到不同的顏色了,但是問題是給不同單元格不同顏色的時候,得到的總是最後的那個顏色,還是實現不了LZ要求,幫忙頂!~~關注ing
yuyang06 2011-01-30
  • 打赏
  • 举报
回复
POI没用过,之前用jxl处理过Excel,可做导入导出
forgottenp 2011-01-30
  • 打赏
  • 举报
回复
POI导入导出当然也可以做到,但是,现在我的EXCEL需要分成很多种样式,需要背景色不同来分开那些数据.但是不知道怎么来设置多种颜色.只能设置48种..因为setFillForegroundColor这两个设置背景的只认short类型的...
铁匠梁 2011-01-30
  • 打赏
  • 举报
回复
不然还想怎么招,年假可以休

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧