【问题标题】:primefaces data exporter XLS exporting only headers not rowsprimefaces 数据导出器 XLS 仅导出标题而不导出行
【发布时间】:2016-03-31 19:07:59
【问题描述】:

我的问题是,当我点击导出数据表的按钮时,它只导出列标题,我的 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 并尝试使用 apache poi 3.8 和 3.10-FINAL 但两者都无法正常工作。

在日志中我没有错误。

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

【问题讨论】:

  • 你的“附言”文本似乎已被截断。随意编辑您的帖子以添加更多内容!
  • 谢谢你,但我完全忘记了我要说什么。
  • 感谢您的回复,但我已经知道发生了什么。问题是,当我的表加载时,它是空的,但看起来像将它导出到 excel 的按钮,在表中保持某种缓存为空,即使在我将数据加载到表中后,该按钮也会继续导出 excel空的。现在,我不知道如何解决这个问题。

标签: jsf primefaces data-export


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      在 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> 
      

      【讨论】:

      • 感谢您的回复,但我已经知道发生了什么。问题是,当我的表加载时,它是空的,但看起来像将它导出到 excel 的按钮,在表中保持某种缓存为空,即使在我将数据加载到表中后,该按钮也会继续导出 excel空的。现在,我不知道如何解决这个问题。
      • 您的意思是您的表是空的并且您尝试导出吗?或者当你按下按钮导出时你的桌子变空了?如果您的情况不是 2,请尝试将您的管理 bean 范围更改为 @viewscope。
      猜你喜欢
      • 1970-01-01
      • 2014-05-26
      • 1970-01-01
      • 2011-08-12
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多