Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Erro ao utilizar DataExporter

Olá pessoal,

Estou com erro ao gerar um relatório em excel utilizando o dataExporter do PrimeFaces.

Estou conseguindo gerar relatorios em pdf, csv, xml porém quando vou exportar pra excel aparece a seguite exceção:

java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.CellStyle.setAlignment(S)V
    org.primefaces.component.export.ExcelExporter.applyOptions(ExcelExporter.java:290)
    org.primefaces.component.export.ExcelExporter.export(ExcelExporter.java:75)
    org.primefaces.component.export.DataExporter.processAction(DataExporter.java:134)

Botão que gera o excel:

<h:commandButton id="xls" styleClass="btn btn-primary" value="Gerar Relatório">

                <p:dataExporter type="xls" target="tbl-ch" 
                                fileName="changesPendentes#{listaTicketAberto.mdy}" 
                                preProcessor="#{listaTicketAberto.customizationOptions()}" />
            </h:commandButton>

DataTable:

  <h:form id="form-tbla">
            <p:dataTable value="#{listaChangeAberta.listaCh}" 
                         var="ch" 
                         style="margin-bottom: 20px"
                         rowKey="#{ch.id}" id="tbl-ch" 
                         selectionMode="single"
                         selection="#{cHController.chSelecionada}"
                         >

                <f:facet name="header">Tabela de Changes Abertas</f:facet>


                <p:column headerText="ID" style="width: 7%">
                    <h:outputText  value=" #{ch.id}" />
                </p:column>

Metodo:

 public void customizationOptions() {
        excelOpt = new ExcelOptions();
        excelOpt.setFacetBgColor("#F88017");
        excelOpt.setFacetFontSize("10");
        excelOpt.setFacetFontColor("#0000ff");
        excelOpt.setFacetFontStyle("BOLD");
        excelOpt.setCellFontColor("#00ff00");
        excelOpt.setCellFontSize("8");

        pdfOpt = new PDFOptions();
        pdfOpt.setFacetBgColor("#F88017");
        pdfOpt.setFacetFontColor("#0000ff");
        pdfOpt.setFacetFontStyle("SERIF");
        pdfOpt.setCellFontSize("22");

    }

Vi que podia ser problema na versão da minha biblioteca POI, porém nao consegui resolver. Estou utilizando primefaces 6.1, Tomcat 8.0.27.0 e POI 3.17. Alguém ja passou por algo parecido e sabe como arrumar?

Valeeeeu!!

4 respostas
solução

Opa, com certeza é problema de versão... o componente do primefaces está buscando por um método que não existe na sua versão do poi. Você precisa ir testando até achar.

Posso ter mais de uma versão do POI no meu projeto?

Não :(. Tem que decidir usar por uma que é compatível com o necessário para o primefaces.

Fala Alberto, eu estava com mais de uma versão no meu projeto... Coloquei a 3.9 e foi KKKKKKKKKKK valeu ai!