【问题标题】:PrimeFaces DataExporter to XLS for multiple Columns not working correctlyPrimeFaces DataExporter 到 XLS 的多列无法正常工作
【发布时间】:2013-08-06 11:07:57
【问题描述】:

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

【问题讨论】:

  • 你能发布postProcessXLS方法吗?
  • @dratewka 它什么都没有。我可以删除它。 Excel 单元格的一些样式。
  • 尝试导出到type="cvs" 并查看生成的文件在文本编辑器中的样子 - 也许 Primefaces 中存在错误。
  • @dratewka 我把它导出到了csv,结果是一样的。

标签: java jsf primefaces


【解决方案1】:

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

如果您有更多担心的问题,请告诉我。

【讨论】:

  • 我是使用 primefaces 导出的新手,你能告诉我什么是“FrameworkConstants.DO_NOT_FOMRAT”,因为我的 Eclipse 超出了查找范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
相关资源
最近更新 更多