Boa tarde galera.
Estou usando o HSSF POI para gerar um relatório em Exel, e retornando ele pelo request da minha aplicação web.
Até ai tudo bem, o arquivo parece estar sendo gerado corretamete, salvo ele no meu desktop, quando vou abrir, o Exel 2003, diz que ele precisa ser reparado, e pergunta se eu quero ou não enviar relatório para Ms.
Dou não, e mando abrir novamente, e então o arquivo é reparado, e funciona.
Alguem saberia dizer se isto é da versão do Exel ou algo assim?
Se for da versão isto é critico, pois no cliente ninguém garante a versão…
Vejam o código que estou usando.
Chamada no action…
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
String opcao = (String) PropertyUtils.getSimpleProperty(form, "opcao");
ActionErrors errors = new ActionErrors();
String codigoMarca = (String) PropertyUtils.getSimpleProperty(form, "codigoMarca");
String codigoColecao = (String) PropertyUtils.getSimpleProperty(form, "codigoColecao");
String codigoCategoria = (String) PropertyUtils.getSimpleProperty(form, "codigoCategoria");
String codigoTipoConsulta = (String) PropertyUtils.getSimpleProperty(form, "codigoTipoConsulta");
if (Constants.CONSULTAR.equals(opcao)) {
...
...
} else if ("exportar".equals(opcao)) {
ArrayList resultados = ((ConsultaEstatisticaDetalhadaForm) form).getResultados();
if (resultados != null) {
HSSFWorkbook wb = new ConsultarEstatisticaDetalhada().exportaEstatisticaDetalhadaAnaliticaXLS(resultados);
response.setContentType("application/xls");
response.setHeader("Content-Disposition", "attachment; filename=estatistica.xls");
response.setHeader("Cache-Control", "false");
response.setContentLength(wb.getBytes().length);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(wb.getBytes());
outputStream.flush();
outputStream.close();
}
}
return mapping.getInputForward();
}
Geração do relatório
public HSSFWorkbook exportaEstatisticaDetalhadaAnaliticaXLS(ArrayList resultados) {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Consulta Analítica");
HSSFRow rowTitulo = sheet.createRow((short) 0);
HSSFCell cellTitulo = rowTitulo.createCell((short) 0);
cellTitulo.setCellValue("Estatisticas");
HSSFCellStyle estilo = wb.createCellStyle();
estilo.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellTitulo.setCellStyle(estilo);
return wb;
}
Obrigado!
