佛山网站制作建设,枣阳网站定制,优秀网页设计分析300字,上海建设工程信息网查询文章目录 1.Web 页面导出数据到文件由后台实现还是前端实现#xff1f;2.Golang Excel 库选型3.后台实现示例4.xlsx 库的问题5.小结参考文献 1.Web 页面导出数据到文件由后台实现还是前端实现#xff1f;
Web 页面导出表数据到 Excel#xff08;或其他格式#xff09;可以… 文章目录 1.Web 页面导出数据到文件由后台实现还是前端实现2.Golang Excel 库选型3.后台实现示例4.xlsx 库的问题5.小结参考文献 1.Web 页面导出数据到文件由后台实现还是前端实现
Web 页面导出表数据到 Excel或其他格式可以由前端或后台来实现具体的实现方式取决于你的应用需求和架构。以下是一些考虑因素
1前端实现。 如果你的数据导出不涉及复杂的数据处理、数据权限控制或数据来源的保护你可以考虑在前端实现数据导出。 前端实现通常意味着使用JavaScript库或框架来生成Excel文件例如使用开源库如SheetJS的xlsx.js或者使用浏览器内置的API如Blob对象和FileSaver.js来生成Excel文件。 前端实现具有即时性用户可以在浏览器中直接进行数据导出操作不需要等待后台处理。
2后台实现。 如果你需要处理大量数据、进行复杂的数据操作、实施数据权限控制、或者需要从数据库或其他后端数据源提取数据通常更适合在后台实现。 后台实现可以使用服务器端脚本如 PHP、Node.js、Python 等来生成 Excel文件。这可以确保数据的一致性和安全性。 后台实现还可以允许对大型数据集进行分页、筛选、排序等操作以提供更强大的导出功能。
一种常见的做法是前端触发数据导出请求将请求发送到后台后台处理数据生成Excel文件然后将生成的Excel文件发送回前端以供用户下载。这种方法结合了前后端的优势可以提供数据处理和安全性。
2.Golang Excel 库选型
目前开源 Golang Excel 库流行的有两个
excelize
Excelize 是一个功能强大的 Go 语言 Excel 库你可以使用 Excelize 创建和编辑工作簿、工作表、单元格等内容。
GitHub 仓库https://github.com/qax-os/excelize
xlsx
xlsx 是一个简单的Golang库用于读写 XLSX 文件。它提供了创建、编辑工作簿、工作表和单元格的功能。
GitHub 仓库https://github.com/tealeg/xlsx
因为 xlsx 较为轻量所以下面以 xlsx 为例给出实现。
3.后台实现示例
在 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; filenamefilename)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 的设置 1Content-Type 设为
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet关于其他类型文件的 MIME 可以参考What is a correct MIME type for .docx, .pptx, etc.? - Stack Overflow。
2还需要设置 “Content-Disposition” 表示回包是一个附件并需要指定附件名称。
4.xlsx 库的问题
通过浏览器下载库 tealeg/xlsx 生成的 Excel 文件后打开时会报下面的错误。 点击“是”后可正常打开文件说明文件内容是正确的。
该警告在 v1 就已经出现且库的作者早已知晓但目前最新版本 v3 仍未解决该问题。可能因为不影响 Excel 文件内容的正确性所以拖到现在仍未解决。
详细讨论请参见 XLSX files produced by this library need repair by Excel. #53。
奇怪地是通过func (*File) Save直接保存至本地的 Excel 文件没有这个问题。
5.小结
综上所述前端或后台的选择取决于你的具体需求、性能、安全性以及数据处理的复杂性。一些应用可能会同时在前端和后台实现导出功能以提供更灵活的选项。 参考文献
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