Liferay 列表导出

Posted

技术标签:

【中文标题】Liferay 列表导出【英文标题】:Liferay list export 【发布时间】:2013-08-02 09:14:24 【问题描述】:

我在 liferay portlet 上显示我的自定义对象列表。 现在我的问题是我想为用户提供导出功能。 列表下方将显示导出链接。 当用户单击该按钮时,它将显示的列表下载为 excel 文件。

我在生成显示列表的同时生成 excel 文件。所以,现在我的问题是导出链接应该如何表现。

我的导出按钮代码。

<portlet:actionURL name="exportURL" var="exportURL"></portlet:actionURL>
 <p><a href="<%=exportURL %>">&larr; Export</a></p>

我正在考虑的一种方法是在生成 excel 文件后,我可以将其上传到 Liferay 的文档库中,然后在 portlet 上提供下载链接作为导出链接,这是一个好方法吗?

【问题讨论】:

您应该在用户单击该链接时动态生成 excel 文件。手动生成并上传 - 在现实生活中不起作用,因为您很快就会发现自己总是在上传更改。 我不是手动操作我有实用程序类,现在可以生成它唯一的事情是点击这个按钮我应该能够调用将生成 Excel 文件的那个,它也应该被下载。 ***.com/questions/8654568/… 【参考方案1】:

您想使用&lt;portlet:resourceURL&gt;,而不是使用&lt;portlet:actionURL&gt;。这会触发 portlet 的资源阶段,您可以在其中提供除 html sn-ps 之外的其他内容类型,例如Excel 类型。

我的印象是您已经掌握了 excel 导出本身,只需要知道如何从 portlet UI 导出,对吗?在serveResource 中,您将获得ResourceRequestResourceResponse 对象,并且可以设置响应的Mimetype(及其OutputStream

【讨论】:

【参考方案2】:

您应该仅在用户单击导出链接后生成文件,因为 adarshr 已在您的问题的评论中写道。如果每次在portlet中显示列表时生成文件并上传到下载中心,那将是对服务器资源的无用浪费。

【讨论】:

【参考方案3】:

您可以使用 poi-2.5.1.jar 在 java 中生成 excel 文件。

利用serveResource方法。

下面的代码sn-p,你可以使用。\

Workbook workBook = new HSSFWorkbook();
Sheet sheet = workBook.createSheet("new sheet");
Row row = sheet.createRow((short)0);
Cell cell = row.createCell(0);
//set row,cell value as per your custom entity
resourceResponse.setContentType("application/vnd.ms-excel");
OutputStream out = resourceResponse.getPortletOutputStream();
workBook.write(out);

HTH, 问候

【讨论】:

感谢 Pankaj 我知道了。

以上是关于Liferay 列表导出的主要内容,如果未能解决你的问题,请参考以下文章

将 Liferay 数据库迁移到 HSQL

Liferay MVCPortlet 中的动态选择列表

如何通过 Liferay API 获取组织和站点角色列表

以编程方式获取在 Liferay 7.2 中部署的 Portlet 列表

Liferay 7 - 单个博客项目的 ADT

在 Liferay 中如何共享从开发环境到测试环境的内容?