修改路径
This commit is contained in:
53
package/excel/download.go
Normal file
53
package/excel/download.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package excel
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"github.com/xuri/excelize/v2"
|
||||
)
|
||||
|
||||
func Data2Excel(ctx context.Context, data []map[string]interface{}) (file string) {
|
||||
|
||||
// 创建一个新的 Excel 文件
|
||||
f := excelize.NewFile()
|
||||
var sheetName = "Sheet1"
|
||||
f.NewSheet(sheetName)
|
||||
|
||||
//// 准备数据
|
||||
//data = []map[string]interface{}{
|
||||
// {"Name": "Alice", "Age": 30, "City": "New York"},
|
||||
// {"Name": "Bob", "Age": 25, "City": "Los Angeles"},
|
||||
// {"Name": "Charlie", "Age": 35, "City": "Chicago"},
|
||||
//}
|
||||
|
||||
//写入头部
|
||||
var colIndex = 0
|
||||
var headers []string
|
||||
for header := range data[0] {
|
||||
//追加头部名字
|
||||
headers = append(headers, header)
|
||||
cell, _ := excelize.CoordinatesToCellName(colIndex+1, 1) // 表头在第一行
|
||||
f.SetCellValue(sheetName, cell, header)
|
||||
colIndex++
|
||||
}
|
||||
|
||||
// 写入数据
|
||||
for rowIndex, record := range data {
|
||||
for colIndex, header := range headers {
|
||||
cell, _ := excelize.CoordinatesToCellName(colIndex+1, rowIndex+2) // 数据从第二行开始
|
||||
f.SetCellValue(sheetName, cell, record[header]) // 通过表头获取数据
|
||||
}
|
||||
}
|
||||
|
||||
// 保存 Excel 文件
|
||||
saveName := fmt.Sprintf("runtime/uploads/out_%v.xlsx", gtime.Now().Nanosecond())
|
||||
if err := f.SaveAs(saveName); err != nil {
|
||||
g.Log().Fatal(ctx, err)
|
||||
}
|
||||
|
||||
//下载excel
|
||||
//g.RequestFromCtx(ctx).Response.ServeFileDownload(saveName)
|
||||
return saveName
|
||||
}
|
||||
Reference in New Issue
Block a user