如何以ExcelCSV格式导出OpenFaces数据表?

问题描述 投票:2回答:1

遗憾的是。OpenFaces Datatable 虽然导出是小菜一碟,但过滤一个IceFaces或primefaces的数据表就不那么容易了,然而primefaces的过滤不能和JSF DataModel一起使用(很遗憾,但确实如此)。

使用OpenFaces DataTable过滤是小菜一碟,而且非常方便和强大,但是如果最终用户想导出一个她过滤过的数据表,以这样的格式导出呢?CSVMS Excel.

伟大的Dmitry从OpenFaces,给我一个提示:使用OpenFaces DataTable方法。getDisplayedRowDatas() 它将从一个数据表中抓取当前显示的行,然后使用一些第三库,例如Itext导出为PDF。

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

  • 创建一个支持Bean来实现这个目的。
  • 添加 Apache POI 第三个库到classpath
  • 使用Apache POI编写代码,用它的方法导出OpenFaces数据化的内容。getDisplayedRowsDatas() - 但恐怕这个方法并不能返回列头的名称--或者抓取OpenFaces Datatable渲染的HTML表作为缓冲字符串,并使用Apache POI生成一个带有Buffer的Excel文件流。

在我最近遇到的MyFaces例子中。MyFaces Datatable导出示例,开发者使用Myfaces组件 <t:buffer value=#{myExportBean.myBufferString}> datatable here </t:buffer /> 来将datatable的内容转换为一个缓冲的字符串,这使得事情变得更加简单。可惜JSF Core没有这样的组件。

以前有人遇到过这种情况吗?如果有帮助或更好的替代方案,我们将非常感激。

jsf datatable export apache-poi openfaces
1个回答
5
投票

你可以检查一下实验性的DataTable导出API,它在当前的夜间构建中可用。如果这个API经得起时间的考验,我们会正式声明。目前,只有CSV导出可用,但你可以为其他格式编写自己的导出器。以下是你应该放在你的动作处理程序中的代码,以使其工作。

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

它将导出表格当前显示的所有行和列的数据(当前只导出分页表的当前页)。

© www.soinside.com 2019 - 2024. All rights reserved.