POI中怎么使用自定义字体颜色

lee80705041 2010-05-19 02:32:41
HSSFFont font = workbook.createFont();
font.setColor(HSSFFont.COLOR_RED);



上面这个是设置了HSSFFont类中存在内部类的字体颜色,

而我想要的是自己定义的颜色,
比如说是 #3366FF
或者是 RGB (150,140,130 )
这样的颜色,而不是默认可以调用

求大侠们帮忙,小弟感激涕零
...全文
1702 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lg_asus 2010-09-21
  • 打赏
  • 举报
回复
呃 试验成功

3.5的也行

我原先是想让多个单元格共用一个CellStyle, 只是在对每个单元格的进行不同的setColor, 结果这样不行, 总是最后一个setColor有效

因此有多少个单元格就应该有多少个CellStyle, 当然也就有多少个Color。 比较繁琐。 幸亏提供了cloneStyleFrom方法,不然定义多个CellStyle代码太繁了
lg_asus 2010-09-21
  • 打赏
  • 举报
回复
我的也不行啊
我用的是3.5版的
lee80705041 2010-05-23
  • 打赏
  • 举报
回复
我用了最新的3.6版本 已经解决该问题
不过还是谢谢你了
lzh_me 2010-05-20
  • 打赏
  • 举报
回复
mark一下,以后用得着。
郑燕辉 2010-05-20
  • 打赏
  • 举报
回复
正求这个
zhuxibang 2010-05-20
  • 打赏
  • 举报
回复
List<String> list 里面第一个是存放颜色,第二个是要显示此颜色的字符串。
String str = "#3366FF";
你指的第一个是不是就是我上面的这个???如果不是的肯定不行

if (hexColor != null) {
rgb = dealHexColorToRGB(hexColor);
}

而且我不知道你这个是如何实现的

你先把你的
rgb = dealHexColorToRGB(hexColor);
HSSFRichTextString richString = new HSSFRichTextString(
list.get(1));
这些代码先全部去掉,只留我给你的代码,看看效果怎么样,然后在一点点把你自己的代码扩展进去,不要一下子全写完,这样你根本就不知道哪里出了问题
我的那几行代码是在好几个项目中应用过的,肯定没有问题,你需要慢慢调,别着急


[Quote=引用 3 楼 lee80705041 的回复:]
Java code
List<String> list = dealRemark(textValue);
int[] rgb = new int[3];
String hexColor = list.get(0);
if (hexColor != ……
[/Quote]
lee80705041 2010-05-19
  • 打赏
  • 举报
回复
List<String> list = dealRemark(textValue);
int[] rgb = new int[3];
String hexColor = list.get(0);
if (hexColor != null) {
rgb = dealHexColorToRGB(hexColor);
}
// 自定义颜色开始
HSSFPalette palette = workbook.getCustomPalette();
System.out.println("RGB["+(byte)rgb[0]+","+(byte)rgb[1]+","+(byte)rgb[2]+"]");
System.out.println("HSSFColor.BLACK.index 第一 :"+HSSFColor.BLACK.index);
palette.setColorAtIndex(HSSFColor.BLACK.index,(byte)rgb[0], (byte)rgb[1], (byte)rgb[2]);
// 自定义颜色结束
HSSFRichTextString richString = new HSSFRichTextString(
list.get(1));
HSSFFont font4 = workbook.createFont();
System.out.println("HSSFColor.BLACK.index 第二 :"+HSSFColor.BLACK.index);
font4.setColor(HSSFColor.BLACK.index);
richString.applyFont(font4);
HSSFCellStyle cellStyle=workbook.createCellStyle();
cellStyle.setFont(font4);
cell.setCellValue(richString);


我按照二楼的那样还是不行啊,反而是全部的字体变成其他颜色了,

palette.setColorAtIndex(HSSFColor.BLACK.index,(byte)color[0], (byte)color[1], (byte)color[2]); 这个方法里的后三个参数是byte类型的,超过127的整型都是负数,这个有关系么?

List<String> list 里面第一个是存放颜色,第二个是要显示此颜色的字符串。

求助~~~
牛叔 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhuxibang 的回复:]

String str = "#3366FF";
//处理把它转换成十六进制并放入一个数
int[] color=new int[3];
color[0]=Integer.parseInt(str.substring(1, 3), 16);
color[1]=Integer.parseInt(str.substring(3, 5), 16);
color[2]=Integer……
[/Quote]
很详细了。。。
zhuxibang 2010-05-19
  • 打赏
  • 举报
回复
String str = "#3366FF";
//处理把它转换成十六进制并放入一个数
int[] color=new int[3];
color[0]=Integer.parseInt(str.substring(1, 3), 16);
color[1]=Integer.parseInt(str.substring(3, 5), 16);
color[2]=Integer.parseInt(str.substring(5, 7), 16);
//自定义颜色
HSSFPalette palette = workbook.getCustomPalette();
palette.setColorAtIndex(HSSFColor.BLACK.index,(byte)color[0], (byte)color[1], (byte)color[2]);
//将自定义的颜色引入进来
HSSFFont font=workbook.createFont();
font.setColor(HSSFColor.BLACK.index);
HSSFCellStyle cellStyle=workbook.createCellStyle();
cellStyle.setFont(font);

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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