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条评论