showliuzp 2025-10-11 11:03 采纳率: 84.3%
浏览 2

golang导出execl header头设置


//路由
func add_router(method_type string, path string, handler http.HandlerFunc) rest.Route {
    return rest.Route{
        Method:  method_type,
        Path:    types.Admin_Http_URL_Prefix + path,
        Handler: handler,
    }
}

导出的路由定义:
add_router(http.MethodGet,"/finance/business/salary/export",response.WrapResponse(BusinessSalaryExport,nil)),   //财务管理-业务员待发工资导出


controller:
 
  func BusinessSalaryExport(r *http.Request) (resp interface{},err error){
      var req = new(iapi.BusinessSalaryListReq)
      if resp,err = ParseReq(r,&req,"财务管理-业务员待发工资-导出,前端参数错误",log_tag_user_streamer);err != nil{
          return
     }
  
      finance_obj.BusinessSalaryExport(req,(*r).Header.Get(types.HEADER_AUTH))
 
      return
  }


BusinessSalaryExport:
func (f *Finance) BusinessSalaryExport(req *iapi.BusinessSalaryListReq,authorization string){
    funs_log_tag := "财务管理-业务员待发工资导出"

    var err error
    //fmt.Printf("header头:%+v\n",*r)
    if err = f.get_token_detail(&authorization);err != nil{
        fmt.Printf("错误:%+v\n",err)
        return
    }

    (*req).PageSize = 1000
    list,total,err := dao.BusinessSalaryList(f.TokenDetail.GuildId,req)
    if err != nil{
        logx.Error(fmt.Sprintf("tags:%+v,%+v,数据库异常,req:%+v,err:%+v", f.LogTag,req,funs_log_tag,err))
        return
    }

   fs := excelize.NewFile()
    defer func() {
        if err := fs.Close(); err != nil {
            fmt.Println(err)
        }
    }()

    // 创建一个工作表
    index, err := fs.NewSheet("Sheet2")
    if err != nil {
        fmt.Println(err)
        return
    }
    // 设置单元格的值
    fs.SetCellValue("Sheet2", "A2", "Hello world.")
    fs.SetCellValue("Sheet1", "B2", 100)
    // 设置工作簿的默认工作表
    fs.SetActiveSheet(index)
    // 根据指定路径保存文件
    if err := fs.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

//调用:
curl -H "lu-live-authorization":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbGFnIjoiYWNjZXNzX3Rva2VuIiwib3BlcmF0b3JfaWQiOjEwLCJhY2NvdW50IjoiZXJpY3MiLCJndWlsZF9pZCI6MSwidXNlcl9uYW1lIjoiZXJpYyIsImlzX3N1cGVyIjowLCJpc3MiOiJsdV9saXZlX2d1aWxkIiwiZXhwIjoxNzYwMTk3NzE3fQ.trBEp1Yjd792-R54dT1ebcaGYduLlnML2McDDkvFZjg"  http://127.0.0.1:33121/api/guild/finance/business/salary/export?status=1     
{"code":0,"msg":"success","data":null}liuzhenpeng@liuzhenpeng ~ $ curl -H "lu-live-authorization":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbfaWQiOjEwLCJhY2NvdW50IjoiZXJpY3MiLCJndWlsZF9pZCI6MSwidXNlcl9uYW1lIjoiZXJpYyIsImlzX3N1cGVyIjowLCJpc3MiOiJsdV9saXZlX2d1aWxkIiwiZXhwIjoxNzYwMTk3NzE3fQ.trBEp1Yjd792-R54dT1ebcaGYduLlnML2McDDkvFZjg"  http://127.0.0.1:33121/api/guild/finance/business/salary/export?status=1

他应该生成一个.xlsx的文件,但输出了一下:{"code":0,"msg":"success","data":null}
  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-10-11 11:08
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题理解

    你想在使用 Go 语言开发 HTTP 服务时,如何设置导出的 EXECL 头信息。

    解决方案

    你可以使用 go build 命令的 -ldflags 参数来设置 EXECL 头信息。具体方法如下:

    go build -ldflags "-X main.version=1.0.0 -H windowsgui" main.go
    

    在上面的命令中,-X 参数用于设置 Go 程序的环境变量,main.version 是环境变量的名称,1.0.0 是环境变量的值。-H 参数用于设置 EXECL 头信息,windowsgui 表示生成 Windows GUI 应用程序。

    注意

    上面的命令需要在 Go 1.11 或更高版本中使用。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月11日