PrimeFaces DataExporter到XLS多个列无法正常工作

时间:2013-08-06 11:07:58

标签: java jsf primefaces

我有<p:dataTable>

<p:dataTable  id="contracttblenone"  var="contract" value="#{reportController.listcontract}" rowKey="#{contract.id}" paginator="true" rows="10"  paginatorPosition="bottom"           paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"         rowsPerPageTemplate="5,10,15" resizableColumns="true" emptyMessage="">
    <p:column>
        <f:facet name="header">
            <h:outputText value="№"/>
        </f:facet>
        <h:outputText value="#{contract.id}"/>
    </p:column>
    <p:column>
        <f:facet name="header">
            <h:outputText value="Firma Ad?"/>
        </f:facet>
        <h:outputText value="#{contract.name}"/>
    </p:column>
    <p:columns  width="60" value="#{contract.liscolumn}" var="column">
        <f:facet name="header">
            <h:outputText value=" #{column.header} "/>
        </f:facet>
        <h:outputText value=" #{column.property} " />   
    </p:columns>
    <f:facet name="header">
        <h:outputText value="Sirket Sozlesmeler"/>
    </f:facet>

</p:dataTable>

这是我的commandLink:

 <h:commandLink>  
       <p:graphicImage value="../img/xls.png" />  
       <p:dataExporter type="xls" target=":formreport:contracttblenone"
           fileName="report" />  
 </h:commandLink> 

以下是dataTable的外观

enter image description here

但是导出的xls是不同的。它正在修改所有的rowas,因为最后一个是来自excel的snaphsot:

x

1 个答案:

答案 0 :(得分:0)

我在使用primeface的exporttoExcel功能时也遇到了一些问题。我在stackoverflow和primefacesForums上搜索了很多但只是知道它是一个与primefaces相关的版本问题。通过我自己创建的函数的方式是现在完美地工作,也可以根据导出到其他格式进行修改。

<p:commandLink  id="back" value="Export to Excel" action="#{agendaBean.exportToExl}" immediate="true" 
                    ajax="false" style="color: #086A87;" ></p:commandLink> 

点击链接后,在bean中调用了exportToExl方法,该方法具有以下内容。

public String exportToExl() {

        ExportToExcel expExlBean = new ExportToExcel();

        List<String> columnNames = new ArrayList<String>();
        columnNames.add("Agenda ID");
        columnNames.add("Matter");
        columnNames.add("Item");
        columnNames.add("OrderNo");
        columnNames.add("AccessPrivilegeString");

        columnNames.add("DocumentNameDisplay");
        columnNames.add("DocumentFolderPath");

        List<String> columnType = new ArrayList<String>();
        columnType.add(FrameWorkConstants.DO_NOT_FORMAT);
        columnType.add(FrameWorkConstants.DO_NOT_FORMAT);
        columnType.add(FrameWorkConstants.DO_NOT_FORMAT);
        columnType.add(FrameWorkConstants.DO_NOT_FORMAT);
        columnType.add(FrameWorkConstants.DO_NOT_FORMAT);
        columnType.add(FrameWorkConstants.DO_NOT_FORMAT);
        columnType.add(FrameWorkConstants.DO_NOT_FORMAT);

        String companyFolderPath = new AgendaIMPL()
                .getCompanyFolderPath(meetingID);
        if (agendaList != null) {
            for (int i = 0; i < agendaList.size(); i++) {
                agendaList.get(i).setDocumentFolderPath(companyFolderPath);
            }
        }
        List expList = agendaList;

        if (expList == null || expList.isEmpty()) {
            ResourceBundle rb = ResourceBundle
                    .getBundle("resources.error1");
            if (rb != null) {
                Utils.addMessage(rb.getString("34").trim(),
                        FacesMessage.SEVERITY_ERROR);
                return null;
            }
        }

        String strVOName = "com.ultimatix.boardAdmin.vo.AgendaVO";

        FacesContext fc = FacesContext.getCurrentInstance();
        HttpServletResponse response = (HttpServletResponse) fc
                .getExternalContext().getResponse();

        String flagStart = FrameWorkConstants.SINGLE;
        expExlBean.exportToExcel(columnNames, columnType, response,
                expList, strVOName, flagStart);

        fc.responseComplete();
    return null;
} 

此处,AgendaList是您在数据表中使用的列表,用于填充您要在Excel工作表中打印的行。

让我知道你感到更担心的问题。