user1860447
user1860447

Reputation: 1436

Headers are not shown in exported excel file from primefaces datatable

I have a datatable like this. But it would not export the headers to excel :

<h:form id="formOptionList">
<p:dataTable id="OptionTable"
             var="Options"
             widgetVar="OptionTable"
             value="#{managedBean.options}"
             filteredValue="#{managedBean.filteredOptions}"
             emptyMessage="No  Options found."
             rendered="#{managedBean.userPreferences.showTable}"
             paginator="true"
             rows="10"
             paginatorTemplate="{FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
             rowsPerPageTemplate="20,50,100"
             >

<p:column id="id" headerText="ID" filterBy="id" filterMatchMode="exact" width="12%" rendered="#{managedBean.userPreferences.showID}" >
        <h:outputText value="#{options.optionID}" />
</p:column>
....
....

</p:dataTable>

<h:panelGrid columns="1">
    <p:panel header="Export All Data">
        <h:commandLink>
            <p:graphicImage value="../resources/images/menuicons/options.png" />
            <p:dataExporter type="xls" target="OptionTable" fileName="Options" />
        </h:commandLink>
    </p:panel>
</h:panelGrid>

 </h:form>  

So I changed it to

 <p:column id="id" filterBy="id" filterMatchMode="exact" width="12%" rendered="#{managedBean.userPreferences.showID}" >
    <f:facet name="header>">
        <h:outputText value="Option ID"/>
   </f:facet>
   <h:outputText value="#{Options.OptionID}" /> 
</p:column>

And I still don't see the headers in the excel file. Any ideas ?

Headers are not shown in exported excel file from primefaces datatable

Upvotes: 2

Views: 7757

Answers (3)

Bipin
Bipin

Reputation: 51

You can put a new column with display none, from the existing column just put an exporter false

<p:column id="id" filterBy="# Options.OptionID}"filterMatchMode="exact" width="12%" rendered="#anagedBean.userPreferences.showID}"exporter="false">
        <f:facet name="header>">
                    <h:outputText value="Option ID" />
        </f:facet>
                <h:outputText value="#{Options.OptionID}" />
</p:column>

Add new column with display none and remove all sorting,filtering and rendering

<p:column exporter="true" style="display:none;">
    <f:facet name="header>">
        <h:outputText value="Option ID"/>
   </f:facet>
   <h:outputText value="#{Options.OptionID}" /> 
  </p:column>

This works perfectly.

Upvotes: 1

Az.MaYo
Az.MaYo

Reputation: 1106

Try this:

<p:column id="id" filterBy="#{Options.OptionID}" filterMatchMode="exact" width="12%" rendered="#{managedBean.userPreferences.showID}" >
    <f:facet name="header>">
        <h:outputText value="Option ID"/>
    </f:facet>
    <h:outputText value="#{Options.OptionID}" /> 
</p:column>

Upvotes: 2

Joffrey Hernandez
Joffrey Hernandez

Reputation: 1846

You put a <h:outputText value= ""/> after your </f:facet> ?

<p:column>
    <f:facet name="header">
        <h:outputText value="Your Column Name" />
    </f:facet>
    <h:outputText value="Your value" />
</p:column> 

Upvotes: 1

Related Questions