您的位置:首页 > 大数据 > 人工智能

利用Grails Export插件 导出数据(原创)

2011-03-01 13:02 337 查看
最近做一个小项目,碰到这个需求,Java的POI貌似在Grails下不太好用。

于是研究了官方网站Export插件,正好帮我解决了这个问题,以下和大家分享下我的经验和心得



当然 如果你没有Grails 的 Export插件, 你就可能需要事先安装和配置:



安装插件命令:grails install-plugin export

然后在你的Project下面的config里面配置,

在grails.mime.types=[]内加入信息如下:



csv: 'text/csv',

pdf: 'application/pdf',

rtf: 'application/rtf',

excel: 'application/vnd.ms-excel',

ods: 'application/vnd.oasis.opendocument.spreadsheet',





You can customize the labels displayed on the export bar by adding the following lines to grails-app/i18n/messages.properties:



default.csv=CSV
default.excel=Excel
default.pdf=PDF
default.rtf=RTF
default.xml=XML
default.ods=ODS




然后在你需要到处数据的页面,加入如下标签:



<export:resource />

<export:formats />

或者可选:

<export:formats formats="['csv', 'excel', 'ods', 'pdf', 'rtf', 'xml']" />





然后在你对应的Controller中加入:



1.导出字段名根据你数据库的字段命名,且无序:

def exportService //导入export



if(params?.format && params.format != "html"){

response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]

response.setHeader("Conten-disposition","attachment:filename=vaccines.${params.extension}")

exportService.export(params.format,response.outputStream,Vaccine.list(params),[:],[:])





2.根据自己命名和顺序来排列字段,例如:





if(params?.format && params.format != "html"){

response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]

response.setHeader("Conten-disposition","attachment:filename=vaccines.${params.extension}")



List fields = ["address","parents","name","dateOfBirth","sex"]

Map labels = ["address":"家庭地址","parents":"家长姓名","name":"儿童姓名","dateOfBirth":"出生时间","sex":"性别"]



def upperCase ={domain,value-> //这段貌似是检查

return value.toUpperCase()

}

Map formatters = [address:upperCase]

Map parameters = [parents:"King","column.widths":[0.2,0.3,0.5]] //这段貌似是固定格式

exportService.export(params.format,response.outputStream,Vaccine.list(params),fields,labels,formatters,parameters)

}



3.根据检索结果导出数据,例:

首先在需要导出的GSP页面上加入



<export:resource />

<export:formats params="${filterParams?filterParams:params}"/>



controller里面和上面不同的地方在:

exportService.export(params.format,response.outputStream,Waybill.createCriteria().list(params,filter),fields,labels,[:],[:])



数据获取方式要改下,这样基本就OK了!



好了,花费不到20分钟,就可以到处你的数据了。

关于根据才查询结果来导出数据,一直还没有时间来得及实验,等系统上线后,再添加进去

但是我还遇到一个问题,就是只能导出当前页的数据内容,无法导出所有数据。

如有高手,请指点一二。



谢谢,以上是我前几天用Grails帮朋友开的一个小软件的一些使用心得。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: