Grails: Как мне сделать мой список в формате MS Excel? - PullRequest
0 голосов
/ 09 октября 2010

gsp делится на две части, верхняя часть похожа на поисковый фильтр, а нижняя часть представляет собой обычный список, предоставленный Grails

У меня есть шаблон _list.gsp в моем list.gsp.И я хочу создать кнопку, чтобы сделать этот шаблон _list.gsp файлом MS Excel.

Но я хочу, чтобы в файле Excel был только шаблон.Не остальная часть страницы

Как я могу сделать это самым простым и прямым способом?Спасибо!

Ответы [ 4 ]

1 голос
/ 09 октября 2010

вы также можете взглянуть на плагин экспорта, если вы хотите экспортировать список в формат Excel

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

1 голос
/ 09 октября 2010

Попробуйте этот довольно грязный трюк в вашем методе индекса:

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

Объяснение : хитрость в том, что HTML-страница, переименованная в * .xls, может быть прочитана пакетами офисного программного обеспечения. Что вы делаете, это говорите браузеру загружать файл с этим именем вместо перехода к обычному HTML-файлу. Если вы хотите использовать это в кнопке, вы должны продолжить работу с любой страницей, генерирующей HTML, а затем добавить этот заголовок к ответу. response является глобальным для действий в контроллерах Grails.

0 голосов
/ 05 мая 2016

Взгляните на плагин для экспорта в Excel. Поддерживается загрузка только в формате .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()}
0 голосов
/ 13 октября 2011

Все, что вам нужно, это отправить данные поиска на ваш контроллер, в контроллере вы можете отправлять контент, как объяснил 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(...)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...