• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

go导出excel

武飞扬头像
扣剑书生
帮助6

入口函数

_, _, list, err := service.BuildingDevice.GetListV2(req)
 if err != nil {
 c.FailJsonExit(r, err.Error())
 }
 excel, err := c.DataToExcel(list)
 if err != nil {
 c.FailJsonExit(r, err.Error())
 }
 // 返回文件流
 filename := "建筑设备信息"
 filename = fmt.Sprintf("%s.xlsx", filename)
 r.Response.Header().Set("Content-Type", "application/octet-stream")
 r.Response.Header().Set("Content-Disposition", "attachment; filename=" filename)
 r.Response.Header().Set("Content-Length", strconv.FormatInt(int64(excel.Len()), 10))
 r.Response.Write(excel)

处理函数

 "github.com/tealeg/xlsx"

func (c *buildingDevice) DataToExcel(data []*dao.BuildingDeviceListRes) (*bytes.Buffer, error) {
 file := xlsx.NewFile()
 sheet, err := file.AddSheet("建筑设备信息")
 if err != nil {
 return nil, err
 }
 row := sheet.AddRow()
 row.AddCell().SetString("设备名称")
 row.AddCell().SetString("设备类型")
 row.AddCell().SetString("设备编号")
 row.AddCell().SetString("规格型号")
 row.AddCell().SetString("区域类型")
 row.AddCell().SetString("所在楼层")
 row.AddCell().SetString("设备位置")
 row.AddCell().SetString("供应商")
 row.AddCell().SetString("生产日期")
 row.AddCell().SetString("启用日期")
 row.AddCell().SetString("合同状态")
 for _, v := range data {
 row := sheet.AddRow()
 row.AddCell().SetString(v.Name)
 switch v.DeviceType {
 case "1":
 row.AddCell().SetString("水表")
 case "2":
 row.AddCell().SetString("电表")
 case "3":
 row.AddCell().SetString("监控")
 case "4":
 row.AddCell().SetString("空调")
 default:
 row.AddCell().SetString("")
 }
 row.AddCell().SetString(v.Code)
 row.AddCell().SetString(v.DeviceModel)
 switch v.AreaType {
 case "1":
 row.AddCell().SetString("室内")
 default:
 row.AddCell().SetString("")
 }
 row.AddCell().SetString(v.TheFloor)
 row.AddCell().SetString(v.DeviceLocation)
 row.AddCell().SetString(v.Supplier)
 if v.ProduceDate.IsZero() {
 row.AddCell().SetString("")
 } else {
 row.AddCell().SetString(v.ProduceDate.Format("2006-01-02"))
 }
 if v.EnableDate.IsZero() {
 row.AddCell().SetString("")
 } else {
 row.AddCell().SetString(v.EnableDate.Format("2006-01-02"))
 }
 switch v.ContractStatus {
 case "1":
 row.AddCell().SetString("正常")
 case "2":
 row.AddCell().SetString("停用")
 default:
 row.AddCell().SetString("")
 }
 }
 buf := new(bytes.Buffer)
 file.Write(buf)
 return buf, nil
}
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfiaika
系列文章
更多 icon
同类精品
更多 icon
继续加载