Pergunta

Estou usando o Jexcelapi para gerar arquivos XLS. A partir de jxl.format.colour, Vejo como obter qualquer uma das cores na "paleta de cores padrão do Excel", mas não como criar uma nova cor (digamos, dado o seu RGB).

Mas no próprio Excel, posso escolher qualquer cor.

Estou apenas perdendo? Existe uma maneira de Jexcelapi para selecionar uma cor arbitrária? No momento, estou usando um método simples de encontrar-o-mais-padrão, o que é bom, mas não ótimo.

Foi útil?

Solução

As versões do Excel antes de 2007 têm uma paleta padrão e, uma vez que a API que você está usando não suporta o formato de 2007, você pode ficar preso a isso. O motivo pelo qual você pode escolher qualquer cor que desejar é provavelmente porque você está usando uma nova versão do Excel.

Ver Esta informação no site da Microsoft.

Não vejo como você pode substituir a paleta de cores padrão na API que você está usando, mas no Apache Poi (que também permite escrever arquivos do Excel) que você pode: consulte esse link. Basicamente, o que você precisa fazer é: atribua certas cores padrão (verde, etc.) às suas células; então sobrepor Essas cores com qualquer cor personalizada necessária.

Outras dicas

A maneira de substituir um índice de paleta na API da Jexcel é usar o método [setColourrgb] [1] na pasta de trabalho gravável. Por exemplo:

myWorkbook.setColourRGB(Colour.LIGHT_TURQUOISE2, 14, 67, 89);

Se você deseja alterar o valor da cor na entrada da paleta, onde há por padrão a segunda turquesa de luz. Ou, mais facilmente em alguns casos, diretamente com o índice da paleta:

myWorkbook.setColourRGB(Colour.getInternalColour(myPaletteIdx), 14, 67, 89);

Uma pequena atualização: apenas os índices de 8 a 64 podem ser personalizados de acordo com um comentário dentro do código -fonte do jxl.biff.paletterecord.

[1]: http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/jxl/write/writableworkbook.html#setcolourrgb(jxl.format.colour, int, int, int)

WritableCellFormat cellFormat = new WritableCellFormat();

Colour customColor = new Colour(10000, "1", 255, 0, 0){     
};

cellFormat.setBackground(customColor);  
writableCell.setCellFormat(cellFormat);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top