0

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

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

我的导出按钮代码。

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

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

4

3 回答 3

2

而不是使用<portlet:actionURL>你想使用的<portlet:resourceURL>. 这会触发 portlet 的资源阶段,您可以在其中提供除 HTML 片段之外的其他内容类型,例如 Excel 类型。

我的印象是您已经确定了 excel 导出本身,只需要知道如何从 portlet UI 导出,对吗?在serveResource你得到一个ResourceRequestand对象并且可以为响应(和它的)ResourceResponse设置 MimetypeOutputStream

于 2013-08-02T20:17:29.153 回答
1

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

于 2013-08-02T16:27:35.507 回答
0

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

使用serveResource 方法。

下面的代码片段,您可以使用。\

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,问候

于 2013-08-02T14:42:10.587 回答