首页 > 解决方案 > 如何用大摇大摆的方式发送 REST 响应 excel 文件?

问题描述

我正在尝试发送响应 excel 文件,但在其中我得到二进制数据。如果尝试使用响应数据作为 xlsx 文件,Excel 显示它已损坏。但是,如果将其保存在本地,一切都很好。对于创建 xlsx 文件,我使用的是 tealeg/xlsx。我究竟做错了什么?

去:

file := xlsx.NewFile()
...
// filling file with data
...
// works fine
err = file.Save("asd.xlsx")
if err != nil {
    fmt.Printf(err.Error())
}
// something went wrong
buffer := new(bytes.Buffer)
if err := file.Write(buffer); err != nil {
    return nil, err
}
r := bytes.NewReader(buffer.Bytes())
cr := ioutil.NopCloser(r)

昂首阔步:

get:
      tags:
        - "Report"
      summary: ""
      description: ""
      consumes:
        - "application/json"
      produces:
        - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
      responses:
        200:
          description: ""
          schema:
            type: file

标签: excelgoswaggerxlsxswagger-editor

解决方案


在通过 http 编写 xlsx 有效负载之前,您需要添加 Content-Type 标头。

    r.Header.Set("Content-Type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

推荐阅读