HSSFColor

6 respostas
Frenesi

Existe alguma maneira de eu mesmo setar a cor que eu quero? Porque eu preciso gerar um relatório que é bem flexível, inclusive as cores das células da tabela que são gravadas no banco de dados pelo usuário.

Obrigado.

6 Respostas

gilliard_santos

olha esse trecho de código

(...)
HSSFFont font = wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setItalic(true);
HSSFCellStyle style = wb.createCellStyle();
style.setFont(font);
cell.setCellStyle(style);
(...)

aqui eu deixo minha célula com a formatacao negrito + itálico.
espero que te ajude.

Frenesi

Obrigado pela resposta mas o que eu quero saber é se tem alguma forma de definir a cor da célula dinâmicamente sem ser pela forma que esta POI sugere como RED, BLUE, YELLOW e etc. Algo com por exemplo usando setado em RGB.

O trecho seria este:

styleCell.setFillForegroundColor(???); styleCell.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

Obrigado.

gilliard_santos

olha, eu nunca tentei fazer isso, ma vc poderia estender a classe HSSFColor e sobrescrever o getHexString() retornando o RGB que voce quer… como por exemplo “0:3333:0” para verde escuro…
nao sei se funciona, mas talvez a idéia pra fazer o que voce esta querendo seja essa…

Frenesi

Pode me dar uma idéia de como eu faria isso?

Obrigado!

gilliard_santos

tenta algo parecido com isso…

//nunca vi uma classe com tanta maiúscula junto no nome :D
public class RGBHSSFColor extends HSSFColor{

  private String rgb;
  public RGBHSSFColor(String rgb){
    this.rgb = rgb;
  }

  public String getHexString(){
    return rgb;
  }

}

nao sei se vai funcionar porque além desse metodo getHexString tem outros métodos nessa classe, mas pelo que vi, esse retorna algo parecido com RGB, só nao sei se só isso basta.
testa e depois comenta no que deu…

Frenesi

Eu até tentei algo parecido mas o método que devo informar a cor recebe algo do tipo short.

public void setFillBackgroundColor(short arg);

A maioria dos métodos desta POI só recebe short.

Obrigado.

Criado 19 de dezembro de 2006
Ultima resposta 19 de dez. de 2006
Respostas 6
Participantes 2