Primefaces数据导出器在Excel中导出空值

时间:2014-11-06 09:52:28

标签: excel jsf-2 primefaces export

我有一个页面,我将一些数据加载到数据表中,并提供一个导出到XLS的按钮。 我使用了Primefaces在其网页中的相同示例代码和XLS文件下载,但是当我打开它时,我发现它是空的,尽管datable包含值。我正在使用Primefaces 4.0,这是我的xhtml页面

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
               xmlns:ui="http://java.sun.com/jsf/facelets"
               xmlns:f="http://java.sun.com/jsf/core"
               xmlns:h="http://java.sun.com/jsf/html"
               xmlns:rich="http://richfaces.org/rich"
               xmlns:a4j="http://richfaces.org/a4j"
               xmlns:p="http://primefaces.org/ui"
               template="/WEB-INF/templates/default.xhtml">


<ui:define name="content">


<h:head>
</h:head> 

<body style="background-image: url('#{request.contextPath}/resources/gfx/Whitewallpaper.jpg')">




<h:form id="form">





 <p:tabView id="tabview" orientation="left" style="width : 1200px; "  > 




       <p:tab title="Visualiser "> 
       <p:panel  header="    "   > 
    <h:commandLink >
        <p:commandButton value="exporter" />
        <p:dataExporter type="xls" target="crs" fileName="prixde"  pageOnly="true" />
    </h:commandLink>


        <p:dataTable id="crs" var="car" value="#{marchebean.selectedmarche.marchetraveau}" >

  <f:facet name="header">
      <center>
     Tbaleau des travaux
      </center>

  </f:facet>


  <f:facet name="footer">

  <h3>  Total HTVA = #{marchebean.calculdetotaltravhtva()}</h3>
   <h3> Total TTC = #{marchebean.calculdetotaltravttc()} </h3>
  </f:facet>


         <p:column headerText="article" width="10%"  >  
        <h:outputText value="#{car.traveaux.article}"/>      
        </p:column>

        <p:column headerText="Désignation des  traveaux" width="40%" > 
         <h:outputText value="#{car.traveaux.designation}"/>   


           <h:outputText value="#{car.traveaux.paragraph}"/>  

        </p:column>  

        <p:column headerText="Unité">  
        <h:outputText value="#{car.traveaux.unite}"/>

        </p:column>  

        <p:column headerText="PUHTVA">  
        <h:outputText value="#{car.prixunitaire}"/>

        </p:column> 

        <p:column headerText="PUTTC">  

        <h:outputText value="#{marchebean.calcultva(car.prixunitaire)}" />
        </p:column> 


        <p:column headerText="Qtt">  
        <h:outputText value="#{car.quantite}"/>

        </p:column> 

        <p:column headerText="MHTVA">  

        <h:outputText value="#{marchebean.calculmonthtva(car.prixunitaire ,car.quantite)}" />

        </p:column> 

         <p:column headerText="MTTC">  
         <h:outputText value="#{marchebean.calculmontttc(car.prixunitaire ,car.quantite)}" />
         </p:column> 

    </p:dataTable> 


        </p:panel>
        </p:tab>


       </p:tabView>     

 </h:form>

   </body> 



</ui:define>



</ui:composition>

3 个答案:

答案 0 :(得分:1)

我们需要提供

<f:facet name="header>
    <h:outputText value="aricle"/>
</f:facet>

然后导出器会将标题添加到导出的文档中。

<p:column headerText="article" width="10%"  >  
        <f:facet name="header">
                <h:outputText value="article" />
        </f:facet>  
        <h:outputText value="#{car.traveaux.article}"/>      
</p:column>

答案 1 :(得分:0)

这对我有用。也许它需要验证,这就是为什么它最后是空的。添加immediate =&#34; true&#34;跳过验证。

    <h:form id="confColaForm" .....>
        <p:dataTable id="tablacolas" ... >

            <f:facet name="header">
                <h:commandLink id="exportar" update=":confColaForm:tablacolas" style="align:right;" immediate="true" >
                    <h:graphicImage library="images" name="iconexcel.png" style="width:30px;height:30px; "
                        title="Exportar" />
                    <p:dataExporter type="xls" target="tablacolas" fileName="ConfiguracionColas" />
                </h:commandLink>
            </f:facet>
            ...(columns here)
    </p:dataTable/>
    </h:form>

答案 2 :(得分:0)

可能的原因可能是“managedbean范围”...... 1)将范围改为“查看” 2)序列化managedbean

这对我有用