【问题标题】:How to export an OpenFaces DataTable in Excel/CSV Format?如何以 Excel/CSV 格式导出 OpenFaces 数据表?
【发布时间】:2011-06-25 16:23:50
【问题描述】:

不幸的是,OpenFaces Datatable 还没有与 Primefaces 或 IceFaces 不同的导出功能。 虽然导出是小菜一碟,但过滤 IceFaces 或 primefaces 数据表并不容易,但 primeFaces 的过滤不适用于 JSF DataModel(可悲但确实如此)。

使用 OpenFaces DataTable 过滤是小菜一碟,非常方便和强大。 但是,如果最终用户希望将自己过滤的数据表导出为 CSVMS Excel 等格式。

来自 OpenFaces 的伟大 Dmitry 给了我一个提示: 使用 OpenFaces DataTable 方法:getDisplayedRowDatas() 从数据表中获取当前显示的行,然后使用 Itext 等第三方库以 PDF 格式导出。

在我看来,这应该是这样的:

  • 为此目的创建一个支持 bean。
  • Apache POI 第三个库添加到类路径
  • 使用 Apache POI 编写代码以使用其方法 getDisplayedRowsDatas() 导出 OpenFaces 数据表的内容 - 但我担心此方法不会返回列标题的名称 - 或抓取由 OpenFaces 数据表呈现的 HTML 表为一个缓冲的字符串,并使用 Apache POI 生成一个使用缓冲区流式传输的 Excel 文件。

在我最近遇到的 MyFaces 示例中:MyFaces Datatable Export Example,开发人员使用 Myfaces 组件 <t:buffer value=#{myExportBean.myBufferString}> datatable here </t:buffer /> 将数据表的内容转换为缓冲字符串,这使事情变得更容易。不幸的是,JSF Core 没有这样的组件。

以前有人遇到过这种情况吗?非常感谢您的帮助或更好的选择。

【问题讨论】:

    标签: jsf datatable export apache-poi openfaces


    【解决方案1】:

    您可以查看实验性 DataTable 导出 API,该 API 在当前的夜间版本中可用。如果它经得起时间的考验,我们将正式宣布这个 API。目前,只有 CSV 导出可用,但您可以为其他格式编写自己的导出器。以下是您应该放入操作处理程序以使其工作的代码:

    DataTable myTable = Faces.component("form:myTable", DataTable.class);
    myTable.export(new CSVTableExporter());
    

    导出表当前显示的所有行和列的数据(当前仅导出分页表的当前页面)。

    【讨论】:

    • 感谢您的回答。很高兴知道 OpenFaces 的传入版本将包含 CSV 导出器。如果它是 CSV 而不是 excel,它很适合我!然而,我该怎么办?用每晚构建一个(我不喜欢)替换实际的 Openfaces jar。否则,我应该如何实际使用导出器 API?因为我将 NBuild 作为第二个库导入,这导致了 JSF 实现冲突。问候
    • 我完全按照您的建议做了我在导出的 CSV 文件中只得到表标题但没有行数据。好像桌子是空的,但事实并非如此。有什么不对?我在论坛发了一个问题!关注@Dmitry
    • 在您在 OF 论坛发帖后解决。但是,我怎样才能使用 3.0 的导出 API。问候@Dmitry
    • 知道为什么这在非夜间版本中仍然不可用吗?
    猜你喜欢
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多