通过点击导出按钮把单据内容全部导出到excel中,先添加路由

r.HandleFunc("/cusexcel", web.Cusexcel)

通过web.Cusexcel方法进行导出

func Cusexcel(w http.ResponseWriter, r *http.Request) {

cutomers, _ := dbdata.Cuslist()
f := excelize.NewFile()
index := f.NewSheet("Sheet1")
data := [][]interface{}{{"序号", "名称", "税号", "地址", "联系人", "联系电话", "联系内容"}}
for _, cutomer := range cutomers {
row := []interface{}{
cutomer.Id,
cutomer.Name,
cutomer.Taxno,
cutomer.Addr,
cutomer.Contact,
cutomer.Contel,
cutomer.Content,
}
data = append(data, row)
}
for i, obj := range data {
//--根据行和列拼接单元格名称
name, err := excelize.JoinCellName("A", i+1)
if err != nil {
fmt.Println(fmt.Sprintf("拼接单元格名称失败,错误:%s", err))
return
}
err = f.SetSheetRow("Sheet1", name, &obj)
if err != nil {
fmt.Println(fmt.Sprintf("按行写入数据失败,错误:%s", err))
return
}
}

f.SetActiveSheet(index)
filename := "客户.xlsx"
w.Header().Add("Content-Type", "application/vnd.ms-excel")
w.Header().Add("Content-Disposition", "attachment; filename="+filename)
f.Write(w)
}

先从数据库中查询所有记录存入切片,然后创建文件,数据以二维的切片形式进行组织,然后循环数据创建单元格和数据的对应关系,最后设置header信息以下载文件的方式返回。导出excel需要引入第三方库github.com/xuri/excelize/v2