素数面数据导出器XLS只导出标题而不导出行



我的问题是,当我点击按钮导出数据表时,它只导出列标题,我的excel文件生成时没有行。

<h:form>

    <p:dataTable id="cteTable" var="cte" 
        emptyMessage="Nenhum Registro Localizado"
        reflow="true" value="#{extratorBean.ctes}" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {Exporters}"
        style="margin-top: 10px" paginator="true" rows="100" scrollable="true" scrollWidth="1024px">
        <f:facet name="{Exporters}">
            <h:commandLink>
                <p:graphicImage name="images/excel.png" width="24" library="samsung" />
                <p:dataExporter type="xls" target="cteTable" fileName="cte-s" />
            </h:commandLink>
        </f:facet>
        <p:column headerText="CNPJ Emissor" width="150" style="text-align: center">
            <h:outputText value="#{cte.EMIT_CNPJ}"/>
        </p:column>
        <p:column headerText="Serie" width="60" style="text-align: center">
            <h:outputText value="#{cte.IDE_SERIE}"/>
        </p:column>
        <p:column headerText="N° CT-e" width="90" style="text-align: center">
            <h:outputText value="#{cte.IDE_NCT}"/>
        </p:column>
        <p:column headerText="Dt. Emissão" width="150" style="text-align: center">
            <h:outputText value="#{cte.IDE_DHEMI}">
                <f:convertDateTime pattern="dd/MM/yyyy" />
            </h:outputText>
        </p:column>
        <p:column headerText="Total Frete" width="80" style="text-align: center">
            <h:outputText value="#{cte.VPREST_VTPREST}">
                <f:convertNumber type="currency" />
            </h:outputText>
        </p:column>
        <p:column headerText="ICMS" width="80" style="text-align: center">
            <h:outputText value="#{cte.ICMS_VICMS}">
                <f:convertNumber type="currency" />
            </h:outputText>
        </p:column>
        <p:column headerText="% ICMS" width="80" style="text-align: center">
            <h:outputText value="#{cte.ICMS_PICMS}">
                <f:convertNumber minFractionDigits="2" />
            </h:outputText>             
        </p:column>
        <p:column headerText="Nat. Op." width="350" style="text-align: center">
            <h:outputText value="#{cte.IDE_NATOP}"/>
        </p:column>
        <p:column headerText="CNPJ Tomador" width="150" style="text-align: center">
            <h:outputText value="#{cte.TOMADOR}"/>
        </p:column>
        <p:column headerText="Chave Acesso" width="350" style="text-align: center">
            <h:outputText value="#{cte.TRANSACTIONID}"/>
        </p:column>
        <p:column headerText="Dt. Criação" width="120" style="text-align: center">
            <h:outputText value="#{cte.IDE_TIMESTAMP}">
                <f:convertDateTime pattern="dd/MM/yyyy" />
            </h:outputText>
        </p:column>
        <p:column headerText="N° Protocolo" width="120" style="text-align: center">
            <h:outputText value="#{cte.IDE_AUTHCODESEFAZ}"/>
        </p:column>
    </p:dataTable>
</h:form>

我使用的是primefaces 5.3,并尝试使用apachepoi 3.8和3.10-FINAL,但两者都不正确。

在日志中我没有任何错误。

编辑:我已经知道发生了什么。问题是,当我的表被加载时,它是空的,但看起来像是将其导出到excel的按钮,保持表的某种缓存为空,即使在我将数据加载到表中后,该按钮也保持导出excel为空。现在,我不知道如何解决这个问题

好吧,如果其他人遇到这个问题,下面是纠正我的答案:我的托管bean是请求范围的。但是当我点击导出excel的按钮时,它向maneedbean发出了一个新的请求。在这个请求中,我的列表为空。我通过在方法getList中放置一个断点来检查这一点。所以我只需将托管bean的作用域从请求作用域更改为查看作用域,它就可以正常工作了

似乎导出程序使用了过滤数据的属性,所以第一次只得到标头,因为过滤数据是空的。我建议在页面加载时尝试将数据添加到过滤后的数据中。

在p:column 之后添加f:facet标头

<p:column>
  <f:facet name="header">
    <h:outputText value="CNPJ Emissor"/>
  </f:facet>
  <h:outputText value="#{cte.EMIT_CNPJ}"/>
</p:column> 

最新更新