gsp分为两部分,顶部部分类似于搜索过滤器,底部部分是Grails提供的常规列表
我的list.gsp中有一个模板_list.gsp。我想创建一个按钮,使_list.gsp模板成为MS Excel文件。
但我只希望模板在Excel文件中。不是页面的其余部分
我怎样才能以最简单直接的方式做到这一点?谢谢!
答案 0 :(得分:1)
在索引方法中尝试这个相当脏的技巧:
response.setHeader( 'Content-Disposition', 'attachment;filename=list.xls' )
解释:诀窍是办公软件套件可以读取重命名为* .xls的HTML页面。您正在做的是告诉浏览器下载具有该名称的文件,而不是导航到常规HTML文件。如果要在按钮中使用它,则应该像使用任何HTML生成页面一样继续,然后将此标头添加到响应中。 response
是Grails控制器中的全局操作。
答案 1 :(得分:1)
如果要将列表导出为excel格式
,还可以查看导出插件答案 2 :(得分:0)
您只需要将搜索数据发送到控制器,在控制器中您可以按照mschonaker的说明发送内容,这是我所做的一个例子
def report = {
def reportType = params.report
....
.....
//Service class that collects data based on search data passed in params
def data = reportservice.execute(param)
//called export plugin to generate xls file
response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]
response.setHeader("Content-disposition", "attachment; filename=${fileName}")
exportService.export(...)
}
答案 3 :(得分:0)
看一下Excel-export插件。这仅支持以 .xlsx 格式下载。使用最简单的编码导出excel。 我从导出插件切换到这个插件,因为与渲染插件发生了冲突。 https://grails.org/plugin/excel-export
response.contentType = 'application/vnd.ms-excel'
response.setHeader("Content-disposition", "attachment; filename=OrderList.xlsx")
new WebXlsxExporter().with { //pass the contructor with "templateFileNameWithPath"
setResponseHeaders(response,new Date().format('dd-MM-yyyy_hh-mm')+"OrderList.xlsx")
fillHeader(labels)
add(data, fields)
save(response.outputStream)
}
response.outputStream.flush()
response.outputStream.close()}