当前位置: 首页 > 知识库问答 >
问题:

Primefaces 3.5如何使用dataExporter导出不可见的dataTable行

卫建义
2023-03-14

我使用primefaces 3.5,我有一个p:dataTable,其中有一些行和数据,我想将这些数据导出到xls文件或其他文件中。

我使用了代码:

xml prettyprint-override"><p:commandButton id="exportBtn" icon="ui-icon-extlink" styleClass="statisticsMenuButton" ajax="false" title="#{msg.general_export_as_xls}">
    <p:dataExporter type="xls" target="cc-eventListTable-eventList" fileName="statistics"/>
</p:commandButton>

这很好用!

我的问题是,我希望在导出的文件和浏览器数据表中有不同的单元格文本。

例如,在导出的xls文件中,我需要在浏览器数据表中设置其他日期格式。否则浏览器单元格中的文本太长!

我试图添加一个额外的列,其中rendered=“false”和exportable=“true”仅用于导出表。但不幸的是,它不起作用!

有人知道怎么做吗?

共有2个答案

楮自珍
2023-03-14

我为我的问题找到了一个变通解决方案。。。

为了使浏览器数据表中的单元格文本不可见,我将css syle“可见性:隐藏对于某些h:outputText。

<p:column styleClass="eventFrom" width="125" sortBy="#{event.dateFrom}">
     <f:facet name="header">
         <h:outputText value="#{msg.general_date}"></h:outputText>
     </f:facet>

     <h:outputText value="#{event.dateFrom}" id="dateFrom">
         <f:convertDateTime type="both" timeZone="#{userManagement.userOptions.timeZone}" pattern="#{msg.time_pattern_ymdhmsM_short}" locale="#{msg.local}" />
     </h:outputText>

     <h:outputText value=" - " id="between" style="visibility:hidden;"></h:outputText>

     <h:outputText value="#{event.dateTo}" id="dateTo" style="visibility:hidden;">
          <f:convertDateTime type="both" timeZone="#{userManagement.userOptions.timeZone}"pattern="#{msg.time_pattern_ymdhmsM_short}" locale="#{msg.local}" />
     </h:outputText>

</p:column>

最好只为dataExporter创建列,但我没有找到解决方案。

白腾
2023-03-14

当呈现的标记设置为false时,它此时不工作(据报告为bug:https://github.com/primefaces-extensions/primefaces-extensions.github.com/issues/209),但您可以使用如下css

 <p:column headerText="#{msg['book.coverType']}" style="display:none;">
         <h:outputText value="#{book.coverType}"/>
</p:column>

另一种解决方案是在托管bean中添加后进程方法并从那里添加列。

public void postprocesxls(对象文档){log.debug(“后处理Excel”);

    HSSFWorkbook workbook = (HSSFWorkbook) document;

    addCoverType(workbook,book);

}

您可以编写如下方法:

public void addCoverType(HSSFWorkbook workbook, List<Book> books) {

    HSSFSheet sheet = workbook.getSheetAt(0);
    HSSFCell cell = null;

 //row 0 is the header (not automatically added by primefaces)
 //add a fifth cell to each row
    for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
        sheet.getRow(i).createCell(4);
        cell = sheet.getRow(i).getCell(4);
        cell.setCellValue(book.get(i - 1).getCoverType());
    }
    log.debug("cover type added");
}

如果您创建可排序列,则顺序也会自动得到尊重:-D

 类似资料:
  • 我有一个自定义的dataTable标记,我在所有视图中都使用它,它位于这里:src/main/webapp/WEB-INF/tags/custom\u dataTable。xhtml 我的问题是,如果我对一个或多个可过滤列进行过滤,并使用dataExporter进行导出,则列过滤会丢失,因此导出会忽略这些额外的过滤。我怎样才能改变这个? 这是自定义datatable标记的源: 我的Primefac

  • 我使用的是PrimeFaces 6.1。我正在尝试使用dataExporter组件导出带有页脚的dataTable。页脚正确导出为CSV和XLS格式,但对于PDF,它只是拒绝包含它。尝试同时使用p:column的footerText和f:facet footer,得到了相同的行为。 我还尝试切换到PrimeFaces扩展导出器,它最终在PDF导出中包含了页脚,但也包含了一些我不知道如何排除的表格列

  • 我正在尝试制作一个JFrame,其中包含一个JGroup,不可见但保持JGroup可见。我怎么才能做到这一点?提前感谢!

  • 问题内容: 我在ID列上运行查询,但我不希望它在我的框架/窗格中可见。我该如何实现?我可以制作另一个表吗,sql / mysql中是否有一个函数可以隐藏列?我试图用谷歌搜索,但还没有发现任何东西。这是代码: 问题答案: 这解决了我的问题: 我把它放在班级建设者中。这样就可以从表的视图中删除该列,但TableModel仍包含“ ID”列。我发现很多人都在寻找一种从sql / mysql中的SELEC

  • 我有三个活动,每个都有一个按钮。Act1与btn1,Act2与btn2,Act3与btn3。我有另一个活动作为主活动,有三个图像视图:ImageView1、imageView2和imageView3,所有这些最初都是不可见的。我希望这样,当我在act1中单击btn1时,MainActivity中的imageView1将可见,而当再次单击btn1,ImageView 1将再次不可见。与imageVi

  • 我正在制作一个网站,我认为导航栏会导致较小的设备太大。我发现了如何使它可滚动,但我不喜欢它旁边显示一个新的滚动条。我怎样才能让它隐形?