Como Imprimir Relatorio com IReport arquivos .xls[RESOLVIDO]

eu sei que vai ter gente que vai pensar ou até postar “ah! mas tem um monte de topicos sobre esse assunto”, ja vo dizendo que pesquisei bastante e por não encotrar resposta é que to aqui…

bem, anteriormente eu estava tentando imprimir o relatorio no browser porém o foco mudo e agora preciso imprimir esse relatorio em xls peguei um conceito de um desenvolvedor que posto aqui no guj mesmo http://www.guj.com.br/java/57855-ireport-com-saida-em-excel eu tenho uma tela em jsf que nela eu digito data inicio e data fim e quero imprimir uma relacao de documentos no excel, com o exemplo fiz e fico assim, mas não ta funfando.

        ContratoDAO cDAO = new ContratoDAO();


        String caminho = "portal/";  
        File file = new File(caminho);  
        file = file.getAbsoluteFile(); 

        String arquivoJasper = getServlet().getServletContext().getRealPath("teste.jasper");
 //    String arquivoJrxml = System.getProperty("user.dir" + "/portal/teste.jrxml");

        String dataIni = request.getParameter("dataInicio");
        String dataFim = request.getParameter("dataFim");

        LinkedList<ContratoApoio> listaApoio = cDAO.ContratoDias(dataIni, dataFim);
        JRBeanCollectionDataSource jrds = new JRBeanCollectionDataSource(listaApoio);  

        HashMap<String, Object> map = new HashMap<String, Object>();

        try {

            JasperPrint jasperPrint = JasperFillManager. fillReport(arquivoJasper, map, jrds);

            JExcelApiExporter xlsExport = new JExcelApiExporter();
            xlsExport.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrint);
            xlsExport.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, caminho + "/teste.xls");
            xlsExport.exportReport();
                } catch (JRException e) {
                    e.printStackTrace();
                    retorno = "failure";
                }catch (JRRuntimeException e){
                    e.printStackTrace();
                    retorno = "failure";
                }catch (Exception e){
                    e.printStackTrace();
                    retorno = "failure";
                }

            retorno = "success";

        }

o erro é esse

java.lang.ClassCastException: net.sf.jasperreports.engine.JasperPrint cannot be cast to java.util.List

tudo bem o JasperPrint nao converte para uma lista, mas o que estou achando estranho é que para PDF ele converte pq nao converte para xls?

OBS.: por favor não levem a mal não mas é que vi em outros tópicos uma galera bem sem educação ai pra evitar a fadiga coloquei o aviso no inicio do tópico

bom dia galera nao consegui fazer o relatorio que queria com o jasper mas consegui com o apache POI.
da uma olhada ai pra ver como fico, agora estou tentando aplicar o template…
espero poder ajudar com esse post pois procurei bastante.

referência:http://www.frameworksystem.com/blog/geracao-de-excel-em-java-utilizando-apache-poi/#comment-1691

HSSFWorkbook workbook = new HSSFWorkbook();
			
			HSSFSheet Sheet = workbook.createSheet("MeuRelatorio");
					
			FileOutputStream fos = null;
			
			try {
			fos = new FileOutputStream(new File("MeuRelatorio"));

	        String dataIni = request.getParameter("dataInicio");
	        String dataFim = request.getParameter("dataFim");
	        
	        
	        LinkedList<ContratoApoio> listaApoio = exDAO.ContratoDias(dataIni, dataFim);
	        JRBeanCollectionDataSource jrds = new JRBeanCollectionDataSource(exDAO.ContratoDias(dataIni, dataFim));  
	        
	        int i = 1;
	        
	        for (ContratoApoio ca : listaApoio) {
	        	HSSFRow row = Sheet.createRow(i);

                       //campos que irao popular a  arquivo xls
	        	row.createCell((short) 1).setCellValue(ca.getNumeroContrato());
	        	row.createCell((short) 2).setCellValue(ca.getTipo());
	        	row.createCell((short) 3).setCellValue(ca.getNomeContrato());
	        	row.createCell((short) 4).setCellValue(ca.getAnoContratoCompra());

	        	i++;

	        	} 

	        FileOutputStream output = new FileOutputStream("c:/MeuRelatorio.xls");
	        workbook.write(output);
	        
	        workbook.write(fos);
	        
			} catch (Exception e) {
				e.printStackTrace();
				System.out.println("erro ao exportar o arquivo");
			}finally{
				try {
					fos.flush();
					fos.close();
				} catch (Exception e2) {
					e2.printStackTrace();
				}
			}