Grails3集成excel插件导入数据保存到数据库

Grails3集成excel插件导入数据保存到数据库

插件地址:http://plugins.grails.org/plugin/grails/excel-import

参考地址:https://github.com/gpc/grails-excel-import

http://aeronz.com/?p=104

环境变量:

| Grails Version: 3.1.5
| Groovy Version: 2.4.6
| JVM Version: 1.8.0_141

在build.gradle中加入excel的依赖

compile 'org.grails.plugins:excel-import:3.0.0.RC4'

新建一个域类User

package com.lee

class User {

    String name  //姓名
    Integer age  //年龄
    String sex   //性别
    String addr  //籍贯

    static constraints = {

        name nullable: false
        age nullable: false,range: 1..100
        sex nullable: false
        addr nullable: false

    }
}

创建控制器UserController

注入excelImportService

def excelImportService

附上excel截图:


v2-79aaa359c7c13880f0c771dfa620e346_hd.jpg


创建文件导入方法

def excelImport = {
        InputStream inputStream = null
        try {
            //获取文件,此处可通过上传获取文件
            File file = new File("d:\\用户信息.xlsx")
            //定义表头
            Map CONFIG_BOOK_COLUMN_MAP = [
                    sheet:'Sheet1',
                    startRow: 1,
                    columnMap:  [
                            //Col, Map-Key
                            'A':'name',
                            'B':'age',
                            'C':'sex',
                            'D':'addr'
                    ]
            ]
            //将文件放到输入流中
            inputStream = new FileInputStream(file)
            Workbook workbook = WorkbookFactory.create(inputStream)

            //解析Excel的行存入list
            List list = excelImportService.columns(workbook,CONFIG_BOOK_COLUMN_MAP)
            list.each { v->
                User user = new User()
                user.name = v.name
                user.age = v.age as Integer
                user.sex = v.sex
                user.addr = v.addr
                println "用户信息:"+user
                user.save(flush:true)
            }
            render ([msg:"Excel导入成功"]) as JSON
        } catch (Exception e) {
            e.printStackTrace()
            render ([msg:"Excel导入失败"]) as JSON
        }finally{
            //关闭输入流
            if(!inputStream){
                inputStream.close()
            }
        }
    }

测试:

启动项目访问:excelImport

attachments-2017-11-T4Kktg2c5a101fcae8b69.png

查看用户列表:attachments-2017-11-j0NuxdN75a101fe4657ae.png


花了1个小时,难免有些疏漏,还望见谅!

附码云地址:https://gitee.com/lj18883588608/grails_excel_import


  • 发表于 2017-11-18 19:57
  • 阅读 ( 1993 )
  • 分类:grails

0 条评论

请先 登录 后评论
不写代码的码农
Jonny

程序猿

65 篇文章

作家榜 »

  1. 威猛的小站长 124 文章
  2. Jonny 65 文章
  3. 江南烟雨 36 文章
  4. - Nightmare 33 文章
  5. doublechina 31 文章
  6. HJ社区-肖峰 29 文章
  7. 伪摄影 22 文章
  8. Alan 14 文章