====== Criação de Planilhas em Excel ====== A arquitetura permite a criação de planilhas do Excel utilizando JavaServer Faces. Para isso, é necessário criar um managed bean que estende ''AbstractExcelMBean'' e sobrescrever os métodos ''getFileName()'' e ''buildExcelDocument()''. Tal serviço utiliza em sua implementação as bibliotecas [[http://poi.apache.org/|Apache POI]] e o componente [[http://static.springframework.org/spring/docs/2.5.x/reference/view.html#view-document-configsubclasses|AbstractExcelView]] do Spring. O método ''getFileName()'' deve retornar o nome do arquivo Excel que será gerado e o método ''buildExcelDocument()'' deverá montar a planilha de acordo com a API do Apache POI. Um tutorial exemplo pode ser encontrado no artigo [[http://www.javaworld.com/javaworld/jw-03-2004/jw-0322-poi.html|Excelling in Excel with Java]]. Para utilizar o managed bean criado para a geração da planilha, é necessário apenas que o desenvolvedor crie um link para a action #{ nomeManagedBean.buildSheet }. ===== Exemplo de Utilização ===== Como exemplo, foi criado um managed bean para gerar uma planilha que mostra os papéis cadastrados no sistema e sua descrição. @Component @Scope("request") public class DescricaoPapeisExcelMBean extends AbstractExcelMBean { @Override protected String getFileName() { return "papeis.xls"; } @Override protected void buildExcelDocument(HSSFWorkbook wb) throws Exception { HSSFSheet sheet = wb.createSheet(); // Adicionando Estilo HSSFCellStyle style = wb.createCellStyle(); HSSFFont negrito = wb.createFont(); negrito.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); style.setFont(negrito); HSSFRow cabecalho = sheet.createRow(0); HSSFCell nome = cabecalho.createCell((short) 0); nome.setCellStyle(style); setText(nome, "Nome"); HSSFCell descricao = cabecalho.createCell((short) 1); descricao.setCellStyle(style); setText(descricao, "Descrição"); // Percorrendo lista de papéis e adicionando linhas int i = 1; Collection papeis = getDAO(PermissaoDAO.class).findAll(Papel.class); for (Papel papel : papeis) { HSSFRow row = sheet.createRow(i); // Cria primeira coluna HSSFCell cell1 = row.createCell((short) 0); setText(cell1, papel.getNome()); // Cria a segunda coluna HSSFCell cell2 = row.createCell((short) 1); setText(cell2, papel.getDescricao()); i++; } } } Para gerar o XLS referente à classe acima, basta adicionar um link para a action ''buildSheet'' do managed bean. A planilha gerada será parecida com a da figura abaixo. {{:desenvolvimento:especificacoes:arquitetura:servicos:planilha.jpg|Planilha Gerada}}