Grails:如何使我的列表成为MS Excel文件?

时间:2010-10-08 22:04:58

标签: excel grails export

gsp分为两部分,顶部部分类似于搜索过滤器,底部部分是Grails提供的常规列表

我的list.gsp中有一个模板_list.gsp。我想创建一个按钮,使_list.gsp模板成为MS Excel文件。

但我只希望模板在Excel文件中。不是页面的其余部分

我怎样才能以最简单直接的方式做到这一点?谢谢!

4 个答案:

答案 0 :(得分:1)

在索引方法中尝试这个相当脏的技巧:

response.setHeader( 'Content-Disposition', 'attachment;filename=list.xls' )

解释:诀窍是办公软件套件可以读取重命名为* .xls的HTML页面。您正在做的是告诉浏览器下载具有该名称的文件,而不是导航到常规HTML文件。如果要在按钮中使用它,则应该像使用任何HTML生成页面一样继续,然后将此标头添加到响应中。 response是Grails控制器中的全局操作。

答案 1 :(得分:1)

如果要将列表导出为ex​​cel格式

,还可以查看导出插件

http://www.grails.org/plugin/export

答案 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()}