Grails:如何将Grails列表导出到Microsoft Excel?

我有一个信息列表,我想将其导出到Excel。 我该怎么做?

“导出插件”是否有用? 我想我刚才看到一个文件导出到Excel,但我找不到它了。

如果你想要真正的 Excel文件(而不仅仅是CSV文件),我已经使用JExcel库取得了一些成功。 这里有一个快速编写的例子,可能有点像Groovy。

编辑:更新我的示例在控制器中执行此操作。 从结构上来说,把这个分开一点会更有意义,但这只是一个例子而已。

import jxl.* import jxl.write.* class SomeController { def report = { def file = createReport(MyDomain.list()) response.setHeader('Content-disposition', 'attachment;filename=Report.xls') response.setHeader('Content-length', "${file.size()}") OutputStream out = new BufferedOutputStream(response.outputStream) try { out.write(file.bytes) } finally { out.close() return false } } private File createReport(def list) { WorkbookSettings workbookSettings = new WorkbookSettings() workbookSettings.locale = Locale.default def file = File.createTempFile('myExcelDocument', '.xls') file.deleteOnExit() WritableWorkbook workbook = Workbook.createWorkbook(file, workbookSettings) WritableFont font = new WritableFont(WritableFont.ARIAL, 12) WritableCellFormat format = new WritableCellFormat(font) def row = 0 WritableSheet sheet = workbook.createSheet('MySheet', 0) list.each { // if list contains objects with 'foo' and 'bar' properties, this will // output one row per list item, with column A containing foo and column // B containing bar sheet.addCell(new Label(0, row, it.foo, format)) sheet.addCell(new Label(1, row++, it.bar, format)) } } } 

使用这个库可以让你做一些事情,比如格式化,使用多个工作表等等。

Grails Export Plugin的function非常出色:将域对象(或查询结果)的列表导出到单个表单(或页面)上,并以多种格式(包括Excel)导出。 能够命名列,指示宽度,dynamic变换数据是非常棒的 – 我已经在几个项目中使用了它。

 if( params.format && params.format != "html"){ response.contentType = grailsApplication.config.grails.mime.types[params.format] response.setHeader("Content-disposition", "attachment; filename=Docs_${new Date().format('yyyy-MM-dd')}.${params.extension}") List fields = ["documentNo", "modifiedBy", "modifiedDate"] Map labels = ["documentNo": 'Document No', "modifiedBy":'Modified by', "modifiedDate":'Last modified'] def fullDocId = { domain, value -> return domain.fullDocId() } def formatDate = { domain, value -> return value.format('yyyy-MM-dd HH-mm') } Map formatters = [documentNo:fullDocId, modifiedDate:formatDate] Map parameters = [title: "${query}", "column.widths": [20, 15, 15]] exportService.export(params.format, response.outputStream, Document.list(), fields, labels, formatters, parameters) } 

不过,我也曾经使用过Robbuild议的JExcel,当时我想要的不是一个简单的列表。 这个工作的正确工具,以及所有这些。 🙂

在插件门户快速searchexcel发现这个插件 。 我没有使用它,所以我不能评论它的质量。

我一直在使用Grails的JXL插件,它完美的工作。

它甚至可以select将Excel文件写入响应,以便用户可以使用我的REST服务直接下载文件。

链接是: http : //grails.org/plugin/jxl

下面是创build工作簿的简单例子:

 new ExcelBuilder().workbook('/path/to/test.xls') { sheet('SheetName') { cell(0,0,'DEF') } } 

你可以在这里find更多的信息。