Criei um sistema que gera um relatório em Excel, o sistema está funcionando perfeitamente, porém, o que está me incomodando é apenas a estética em que o relatório está sendo gerado. O cabeçalho da planilha não está centralizado, não está em negrito e também, não tem cor no fundo, pesquisei alguns exemplos porém, sem sucesso. Alguém pode me dar um exemplo de código que se encaixe no meu? Segue me código.
Workbookwb=newHSSFWorkbook();//Cria uma planilha ExcelSheetsheet=wb.createSheet("Relatório C");//Cria uma linha na Planilha.Rowcabecalho=sheet.createRow((short)0);//Cria as células na linha cabecalho.createCell(0).setCellValue("Item");cabecalho.createCell(1).setCellValue("Credor");cabecalho.createCell(2).setCellValue("Documento");cabecalho.createCell(3).setCellValue("Título");cabecalho.createCell(4).setCellValue("Or");
Você precisa setar o CellStyle da célula para decorar suas células.
M
MuriloSoares
Boa tarde Staroski,
Consegui usando o CellStyle, ficou assim:
//Cria uma linha na Planilha.Rowcabecalho=sheet.createRow((short)0);//adicionando bordasCellStylestyle=wb.createCellStyle();//criei o CellStylestyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//texto centralizadostyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//não sei kkstyle.setFillForegroundColor(HSSFColor.LEMON_CHIFFON.index);//cor de fundostyle.setBorderBottom(CellStyle.BORDER_THIN);//borda de baixostyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());//cor borda baixostyle.setBorderLeft(CellStyle.BORDER_THIN);//borda da esquerdastyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());//cor borda esquerdastyle.setBorderRight(CellStyle.BORDER_THIN);//borda direitastyle.setRightBorderColor(IndexedColors.BLACK.getIndex());//cor borda direitastyle.setBorderTop(CellStyle.BORDER_THIN);//borda de cimastyle.setTopBorderColor(IndexedColors.BLACK.getIndex());//cor borda cima//Cria as células na linhaCellcell;cell=cabecalho.createCell(0);//tive que criar cada célula do cabeçalhocell.setCellValue("Item");//texto da celula 0cell.setCellStyle(style);//setando o Stlye para a célulacell=cabecalho.createCell(1);//e assim sucessivamente..cell.setCellValue("Credor");cell.setCellStyle(style);cell=cabecalho.createCell(2);cell.setCellValue("Documento");cell.setCellStyle(style);cell=cabecalho.createCell(3);cell.setCellValue("Titulo");cell.setCellStyle(style);cell=cabecalho.createCell(4);cell.setCellValue("Or");cell.setCellStyle(style);
Agora estou a procura de saber como faço para gerar o excel com o tamanho das colunas personalizada, para não sair todas do mesmo tamanho.
Obrigado pela atenção.
Solucao aceita
staroski
Vejá a documentação do método setColumnWidth da classe Sheet.
M
MuriloSoares
Olá,
Consegui utilizando o seguinte comando:
Sheetsheet=wb.createSheet("Relatório C");Rowcabecalho=sheet.createRow((short)0);Cellcell;cell=cabecalho.createCell(0);cell.setCellValue("Item");sheet.autoSizeColumn((short)0);//onde 0 é o número da célula.
Ele personaliza automaticamente o tamanho através do seu conteúdo.