github.com/360EntSecGroup-Skylar/excelize
package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/go-sql-driver/mysql"
	"github.com/360EntSecGroup-Skylar/excelize"
)

func main() {
	// 连接到数据库
	db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/database")
	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	// 执行查询语句
	rows, err := db.Query("SELECT * FROM your_table")
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()

	// 创建Excel文件
	file := excelize.NewFile()
	sheetName := "Sheet1"

	// 添加表头
	columns, err := rows.Columns()
	if err != nil {
		log.Fatal(err)
	}
	for i, colName := range columns {
		cell := excelize.ToAlphaString(i) + "1"
		file.SetCellValue(sheetName, cell, colName)
	}

	// 添加数据行
	rowIndex := 2
	values := make([]interface{}, len(columns))
	scanArgs := make([]interface{}, len(values))
	for i := range values {
		scanArgs[i] = &values[i]
	}

	for rows.Next() {
		err := rows.Scan(scanArgs...)
		if err != nil {
			log.Fatal(err)
		}

		for i, value := range values {
			cell := excelize.ToAlphaString(i) + fmt.Sprint(rowIndex)
			file.SetCellValue(sheetName, cell, value)
		}

		rowIndex++
	}

	// 保存Excel文件
	err = file.SaveAs("output.xlsx")
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println("导出成功")
}
excelize
go get github.com/360EntSecGroup-Skylar/excelize
sql.Openusernamepassworddatabasedb.QuerySELECT * FROM your_table
output.xlsx