利用Grails Export外掛程式 匯出資料(原創)

來源:互聯網
上載者:User

最近做一個小項目,碰到這個需求,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=CSVdefault.excel=Exceldefault.pdf=PDFdefault.rtf=RTFdefault.xml=XMLdefault.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幫朋友開的一個小軟體的一些使用心得。

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.