Go
beego通过mysql获取数据导出到excel表格
beego通过mysql获取数据导出到excel表格
周五的时候,想给最近捣鼓到网站加一个导出数据到功能,毕竟刚开始接触Go语言,对这一块不是很熟悉,所以网上查找了相关到文章,但是发现基本都不能用,或者是导出错乱,严重怀疑是不经过验证就复制粘贴发表出去的,最后自己参考了相关知识,自己摸索写出了代码,并最终检验成功,下面跟大家分享如何通过获取mysql数据并导出到excel表格,先是mysql部分代码,大家根据自己情况写
//初始化表对象 var statisticAdmin StatisticAdmin /** 根据条件获取用户登录记录【导出专用】 */ func PageStatisticAdminWithExcel(searchStartDate string, searchEndDate string, searchAdminId int) ([]StatisticAdmin) { var list []StatisticAdmin o := orm.NewOrm() qs := o.QueryTable(statisticAdmin) //判断筛选条件 if searchStartDate != "" { qs = qs.Filter("create_date__gte", searchStartDate) } if searchEndDate != "" { qs = qs.Filter("create_date__lte", searchEndDate) } if searchAdminId > 0 { qs = qs.Filter("admin_id", searchAdminId) } //查询 qs.OrderBy("-id").All(&list) return list }
然后我们在控制器引入相关模块,获取前端传过来的值判断进行获取数据,然后我们会将数据生成保存到static/file/AdminStatisticUserLogin.xlsx文件上,最后我们直接下载该文件并命名为用户登录统计.xlsx,这样就可以实现数据保存,我们还可以通过sheet.SetColWidth(0, 2, 30.0)来设置表格的宽度,这三个参数到意思是从1第一列到第三列表格到宽度设置为30,大家可根据自己到实际情况进行设置。
import ( "personForum/models" "github.com/astaxie/beego" "time" "github.com/tealeg/xlsx" ) /** 后台-统计模块 */ type AdminStatisticController struct { AdminBaseController } /** 统计-用户登录数据导出 */ func (c *AdminStatisticController) AdminStatisticUserLoginExcel() { //获取用户搜索参数 searchStartDate := c.GetString("searchStartDate") //搜索-开始日期 searchEndDate := c.GetString("searchEndDate") //搜索-结束日期 searchAdminId, searchAdminIdErr := c.GetInt("searchAdminId") //搜索-管理员Id if searchStartDate == "" { searchStartDate = "" } if searchEndDate == "" { searchEndDate = "" } if searchAdminIdErr != nil { searchAdminId = 0 } //设置保存路径 filePath := "static/file/AdminStatisticUserLogin.xlsx" //创建文件 var file *xlsx.File var sheet *xlsx.Sheet var row *xlsx.Row var cell *xlsx.Cell file = xlsx.NewFile() sheet, _ = file.AddSheet("Sheet1") //设置表格宽度从第一列到第三列,宽度设置为30 sheet.SetColWidth(0, 2, 30.0) //创建表头 row = sheet.AddRow() cell = row.AddCell() cell.Value = "登录账户" cell = row.AddCell() cell.Value = "登录IP" cell = row.AddCell() cell.Value = "登录时间" //获取管理员 adminUser := models.GetAdminUserWithAdmin() //获取统计数据 result := models.PageStatisticAdminWithExcel(searchStartDate, searchEndDate, searchAdminId) //重组统计数组 for _, v := range result { //循环获取登陆用户名 adminUserName := "" for _, vUser := range adminUser { if vUser.Id == v.AdminId { adminUserName = vUser.Nickname continue } } //获取时间 CreateAt := beego.Date(time.Unix(v.CreateAt, 0), "Y-m-d H:s:i") //追加数据 row = sheet.AddRow() sheet.SetColWidth(0, 2, 30.0) cell = row.AddCell() cell.Value = adminUserName cell = row.AddCell() cell.Value = v.Ip cell = row.AddCell() cell.Value = CreateAt file.Save(filePath) } // 导出表格 c.Ctx.Output.Download(filePath, "用户登录统计.xlsx") }
这样我们就可以成功到根据条件获取数据并导出到excel表格,思路就是将数据生成表格保存在我们指定到目录文件中,然后我们通过下载文件到方法,将文件导出。
0条评论