Web 页面导出表数据到 Excel(或其他格式)可以由前端或后台来实现,具体的实现方式取决于你的应用需求和架构。以下是一些考虑因素:
(1)前端实现。
(2)后台实现。
一种常见的做法是,前端触发数据导出请求,将请求发送到后台,后台处理数据生成Excel文件,然后将生成的Excel文件发送回前端以供用户下载。这种方法结合了前后端的优势,可以提供数据处理和安全性。
目前开源 Golang Excel 库流行的有两个:
Excelize 是一个功能强大的 Go 语言 Excel 库,你可以使用 Excelize 创建和编辑工作簿、工作表、单元格等内容。
GitHub 仓库:https://github.com/qax-os/excelize
xlsx 是一个简单的Golang库,用于读写 XLSX 文件。它提供了创建、编辑工作簿、工作表和单元格的功能。
GitHub 仓库:https://github.com/tealeg/xlsx
因为 xlsx 较为轻量,所以下面以 xlsx 为例,给出实现。
在 Web 框架 Gin 中生成 Excel 文件并在接口返回。
func ExportHandler(c *gin.Context) {
file := xlsx.NewFile()
sheet, _ := file.AddSheet("InsuranceActive")
// Add titles.
titles := []string{
"Id",
"CreatedAt",
"UpdatedAt",
"CreatorId",
"UpdaterId",
"CompanyName",
}
row := sheet.AddRow()
for _, title := range titles {
cell := row.AddCell()
cell.Value = title
}
// Add rows just like add titles.
...
// Return the excel file.
c.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
filename := fmt.Sprintf("IndustryInfos_%v.xlsx", time.Now().Format("2006-01-02T15:04:05"))
c.Header("Content-Disposition", "attachment; filename="+filename)
if err := file.Write(c.Writer); err != nil {
c.JSON(http.StatusOK, "failed")
return
}
c.JSON(http.StatusOK, "suceess")
}
// 设置路由
engine.GET("/xlsx/export", ExportHandler)
注意回包 Header 的设置: (1)Content-Type 设为:
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
关于其他类型文件的 MIME 可以参考:What is a correct MIME type for .docx, .pptx, etc.? - Stack Overflow。
(2)还需要设置 “Content-Disposition” 表示回包是一个附件,并需要指定附件名称。
通过浏览器下载库 tealeg/xlsx 生成的 Excel 文件后,打开时会报下面的错误。
点击“是”后可正常打开文件,说明文件内容是正确的。
该警告在 v1 就已经出现,且库的作者早已知晓,但目前最新版本 v3 仍未解决该问题。可能因为不影响 Excel 文件内容的正确性,所以拖到现在仍未解决。
详细讨论,请参见 XLSX files produced by this library need repair by Excel. #53。
奇怪地是通过func (*File) Save
直接保存至本地的 Excel 文件没有这个问题。
综上所述,前端或后台的选择取决于你的具体需求、性能、安全性以及数据处理的复杂性。一些应用可能会同时在前端和后台实现导出功能,以提供更灵活的选项。
The tealeg/xlsx Tutorial: Reading and writing xlsx files with Go What is a correct MIME type for .docx, .pptx, etc.? - Stack Overflow XLSX files produced by this library need repair by Excel. #53
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有