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