====== 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}}