[color=“darkblue”]Minha dúvida é a seguinte, preciso formatar algumas colunas específicas com cores diferentes, quando seto as cores para cada coluna da planilha o mesmo sempre seta a cor de todas as planilhas como a última cor que setei, se alguém puder ajudar desde já agradeço
private void getStyle(HSSFCellStyle style, HSSFFont font, HSSFRow row, Cell[] cells) {
for (short i = 0; i < cells.length; i++) {
font.setFontName(“TIMES NEW ROMAN”);
font.setColor(HSSFColor.BLUE.index);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
style.setFont(font);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
if (i == 0){
style.setFillForegroundColor(HSSFColor.GREY_50_PERCENT.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
} else if (i == 8 ) {
style.setFillForegroundColor(HSSFColor.YELLOW.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
} else{
style.setFillForegroundColor(HSSFColor.WHITE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
}
HSSFCell cell = row.createCell(i);
cell.setCellValue((String) cells[i].getValue());
cell.setCellStyle(style);
}
} [/color]
[color=“darkblue”]private void getStyle(HSSFWorkbook wb, HSSFRow row, Cell[] cells) {
HSSFFont font = wb.createFont();
HSSFCellStyle styleTwo = wb.createCellStyle();
HSSFCellStyle styleOne = wb.createCellStyle();
HSSFCellStyle style = wb.createCellStyle();
for (short i = 0; i < cells.length; i++) {
HSSFCell cell = row.createCell(i);
cell.setCellValue((String) cells[i].getValue());
String teste = "";
teste = ((String) cells[i].getValue());
font.setFontName("TIMES NEW ROMAN");
font.setColor(HSSFColor.BLUE.index);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
style.setFont(font);
styleOne.setFont(font);
styleTwo.setFont(font);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
if (teste.equalsIgnoreCase("Mês")){
styleOne.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
styleOne.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cell.setCellStyle(styleOne);
} else if (teste.equalsIgnoreCase("Dia")){
style.setFillForegroundColor(HSSFColor.YELLOW.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cell.setCellStyle(style);
} else {
styleTwo.setFillForegroundColor(HSSFColor.WHITE.index);
styleTwo.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cell.setCellStyle(styleTwo);
}
}
}[/color]
Olá, amigo!
Bom, eu tive esse mesmo problema, para resover isso basta criar um objeto para cada estilo, ou seja, não fique alterando os atributos de um mesmo objeto, crie objetos distintos para cada estilo que você quer. Não sei se isso é bug ou uma feature do POI.
Espero ter ajudado!
ps: legal o Blanka, bem parecido com qualquer brasileiro, não é mesmo?
[color=“darkblue”]Sempre gostei do Blanka :lol:
O correto também não é colocar os estilos dentro de um laço, o correto é já ter todos os estilos fora e apenas passá-los como parâmetro em um método ou fora de um método, se você faz o que eu fiz no código acima em planilhas muito grandes o consumo de memória é imenso[/color]