5

我有一个<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>

这是我的命令链接:

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

这是数据表的外观

在此处输入图像描述

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

X

4

1 回答 1

0

好吧,我在使用 primefaces 的 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 工作表中打印该列表。

让我知道,以防你觉得有任何更关心的问题。

于 2013-08-13T04:21:01.633 回答