Golang excel 封装导出功能

本文介绍了一个使用Golang实现的Excel数据导出函数,该函数能够将数据库查询结果转换为Excel文件,支持多种数据类型,包括字符串、整型和浮点数,并能自动生成带有样式的工作表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package myutils

import (
	"feinail/of_capital/config"
	"fmt"
	"github.com/jinzhu/gorm"
	"github.com/tealeg/xlsx"
	"strconv"
	"time"
)

func ExcelExportData(db *gorm.DB, config config.Config, header []interface{}, data [][]interface{}, sheetName string) string {
	timeStr := time.Now().Format("2006-01-02 15:04:05")
	var file *xlsx.File
	var sheet *xlsx.Sheet
	var row *xlsx.Row
	var cell *xlsx.Cell

	style := &xlsx.Style{}
	style.Fill = *xlsx.NewFill("solid", "EFEFDE", "EFEFDE")
	style.Border = xlsx.Border{RightColor: "FF"}
	file = xlsx.NewFile()
	sheet, _ = file.AddSheet(sheetName)
	row = sheet.AddRow()
	for _, head := range header { //looping from 0 to the length of the array
		cell = row.AddCell()
		cell.Value = head.(string)
		cell.SetStyle(style)
	}
	for _, obj := range data {
		fmt.Println(obj)
		row = sheet.AddRow()
		for _, value := range obj {
			switch value.(type) {
			case string:
				value = value
				break
			case int:
				value = strconv.Itoa(value.(int))
				break
			case float64:
				value = strconv.FormatFloat(value.(float64), 'f', -1, 64)
				break
			}

			cell = row.AddCell()
			cell.Value = value.(string)
		}
	}
	url := config.ExcelPath + timeStr + ".xlsx"
	file.Save(url)
	return url
}

func To2Array(params []interface{}) [][]interface{} {
	var content_arr [][]interface{}
	for _, param := range params {
		var col []interface{}
		for _, p := range param.([]interface{}) {
			col = append(col, p.(interface{}))
		}
		content_arr = append(content_arr, col)
	}
	return content_arr
}






content := ReqParams["content"].([]interface{})
content_arr2 := myutils.To2Array(content)
rs := myutils.ExcelExportData(db, config, ReqParams["header"].([]interface{}), content_arr2, ReqParams["sheet_name"].(string))


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值