如何以Excel / CSV格式导出OpenFaces数据表?

问题描述

| 不幸的是,OpenFaces Datatable还没有像Primefaces或IceFaces那样具有导出功能。 虽然导出是小菜一碟,但是过滤IceFaces或primefaces数据表确实有些恐怖,但是primeFaces的过滤不适用于JSF DataModel(很遗憾,但确实如此)。 使用OpenFaces DataTable进行过滤非常容易,而且功能强大。 但是最终用户想要将经过过滤的数据表导出为CSV或MS Excel等格式。 OpenFaces的伟大Dmitry给了我一个提示: 使用OpenFaces DataTable方法:“ 0”将从数据表中获取当前显示的行,然后使用诸如Itext之类的通用库以PDF格式导出。 在我看来,这应该是这样的: 为此创建一个备用bean。 将Apache POI第三个库添加到类路径 使用Apache POI编写代码以使用方法
getDisplayedRowsDatas()
导出OpenFaces数据表的内容-但恐怕此方法不会返回列标题的名称-或将由OpenFaces数据表呈现的HTML表作为缓冲字符串捕获,并且使用Apache POI生成与Buffer流式传输的Excel文件。 在我最近遇到的MyFaces示例中:MyFaces Datatable Export Example,开发人员使用Myfaces组件
<t:buffer value=#{myExportBean.myBufferString}> datatable here </t:buffer />
将数据表的内容转换为缓冲的String,这使事情变得更加容易。不幸的是,JSF Core没有这样的组件。 有人遇到过这个吗?帮助或更好的替代品受到极大的赞赏。     

解决方法

        您可以查看实验性的DataTable导出API,该API在当前的每晚版本中都可用。如果经时间考验,我们将正式声明此API。目前,仅CSV导出可用,但是您可以为其他格式编写自己的导出器。这是您应放入动作处理程序中以使其起作用的代码:
DataTable myTable = Faces.component(\"form:myTable\",DataTable.class);
myTable.export(new CSVTableExporter());
它导出表当前显示的所有行和列的数据(当前仅导出分页表的当前页面)。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...