本文用到的导出excel功能库是: Excelize,Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX XLSM XLTM XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要求使用的 Go 语言为 1.15 或更高版本。
费话不多讲,上手开练, 前端实现很简单,只要添加一个A标签,实现一个GET请求即可:
<a class="layui-btn" href="{{urlfor "PCController.Export2Excel"}}"><i class="layui-icon"></i>导出EXCEL</a>
具体效果如下:

后端代码实现:
func (p *PCController) Export2Excel() {uName := p.GetSession("username").(string)if !tools.HasPermission(uName, "view_computer") {p.Redirect(beego.URLFor("ErrorController.Error403"), 302)}o := orm.NewOrm()qs := o.QueryTable(new(models.Computer)).Filter("is_delete", 0)var computers []models.Computer_, _ = qs.RelatedSel().All(&computers)titles := []string{"位置", "主机名", "设备类型", "品牌", "型号", "当前使用者", "资产分组", "资产编号", "购买时间", "序列号", "快速服务代码","质保时间", "逻辑删除1删除0未删除", "1启用0停用", "1报废0正常", "1仓库中0仓库外", "IP地址", "备注", "主机cpu", "主机内存","主机磁盘", "操作系统",}cells := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U","V",}// 新建工作簿f := excelize.NewFile()index := f.NewSheet("Sheet1")// 列标题赋值for i, v := range titles {_ = f.SetCellValue("Sheet1", cells[i]+"1", v)}var computerList [][]stringfor _, element := range computers {tmpArr := []string{element.Location, element.Name, element.DeviceTypes.DeviceType, element.Brands.Name,element.Model, element.UserName, element.Groups.GroupName, element.AssetNo, element.PurchaseDate,element.SN, element.QuickServiceCode, element.Warranty, strconv.Itoa(element.IsDelete),strconv.Itoa(element.IsActive), strconv.Itoa(element.IsBreakdown), strconv.Itoa(element.InRepository),element.IpAddress, element.Remark, element.Cpu, element.Memory, element.Disk, element.OS,}computerList = append(computerList, tmpArr)}for i, v := range computerList {// i 行数// v 行内容columnNum := 0 // 列数for _, e := range v {pos := cells[columnNum] + strconv.Itoa(i+2)fmt.Println(pos)fmt.Println(e)_ = f.SetCellValue("Sheet1", pos, e)columnNum++}}f.SetActiveSheet(index)f.Path = "static/excels/computers.xlsx"if err := f.Save(); err != nil {fmt.Println(err)}p.Ctx.Output.Download(f.Path, "computers.xlsx")}
导出的Excel内容如下:

文章转载自ZFR98186,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




