利用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:
然后在你需要到处数据的页面,加入如下标签:
<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帮朋友开的一个小软件的一些使用心得。
于是研究了官方网站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帮朋友开的一个小软件的一些使用心得。
相关文章推荐
- 无插件,无com组件,利用EXCEL、WORD模板做数据导出(一)
- 【原创】WinForm导出数据到EXCEL(根据微软的Excel插件)
- php利用phpexcel插件实现数据的导入和导出(支持csv\xls\xlsx格式和超过26个字段列)
- 利用itext操作pdf从数据库导出大量数据--功能汇总(一)
- 利用osmosis导出osm城市数据
- 利用Spire.DataExport将数据(Database/DataTable)导成各种文件
- 一切尽在自动中(一),sqlserver “利用bcp方式导出数据FTP上传”
- 利用SQL的SSIS包设计器来导出数据表数据到excel
- Java Web利用POI导出Excel的示例(不在数据库取数据,Map类型的数据)
- ASP.NET,Web界面利用Button来实现将telerik:RadGrid表格内数据导出Excel
- 利用Oracle数据泵完成数据导入和导出
- 利用 powerdesigner 从oracle数据库中导出数据物理模型结构
- 利用POI插件导入excel怎样读取合并行数据?
- 利用OleDb方式对DataSet 和 Excel 数据快速导入导出
- 利用PHPExcel读取Excel的数据和导出数据到Excel
- 框架 day50 BOS项目 4 批量导入(ocupload插件,pinyin4J)/POI解析Excel/Combobox下拉框/分区组合条件分页查询(ajax)/分区数据导出(Excel)
- 利用Shell将MySQL数据表导出为csv文件
- 利用phpExcel进行数据导出
- PHP 利用PHPExcel类库批量导出数据
- 异步导入导出Redis数据(利用Hiredis、Libevent)