这段代码与上段代码可以联合导出表格吗
时间: 2024-04-16 13:26:53 浏览: 62
是的,你可以使用 `excelize` 库来联合导出表格。以下是一个示例代码,演示了如何将两个表格导出到同一个 Excel 文件中:
```go
func (c *Login) TestExport() {
// 导出第一个表格
var admins []models.Admin
models.NewAdminModel().GetDB().Model(&admins).Find(&admins)
file1, err := lib.ExportToExcel(admins)
if err != nil {
c.returnError(lib.HttpInternalServerError, "导出错误!")
}
// 导出第二个表格
var users []models.User
models.NewUserModel().GetDB().Model(&users).Find(&users)
file2, err := lib.ExportToExcel(users)
if err != nil {
c.returnError(lib.HttpInternalServerError, "导出错误!")
}
// 创建新的 Excel 文件
file := excelize.NewFile()
// 将第一个表格写入 Excel 文件
file1.Seek(0, 0)
file1Bytes, _ := ioutil.ReadAll(file1)
file1.Close()
file.SetSheetName("Sheet1", "Admins")
file.SetSheetRow("Admins", "A1", &[]interface{}{"ID", "Name", "Email"})
file.SetSheetRow("Admins", "A2", &[]interface{}{1, "John Doe", "john@example.com"})
file.SetSheetRow("Admins", "A3", &[]interface{}{2, "Jane Smith", "jane@example.com"})
file.SetSheetRow("Admins", "A4", &[]interface{}{3, "Mike Johnson", "mike@example.com"})
// 将第二个表格写入 Excel 文件
file2.Seek(0, 0)
file2Bytes, _ := ioutil.ReadAll(file2)
file2.Close()
file.AddSheet("Users")
file.SetSheetRow("Users", "A1", &[]interface{}{"ID", "Name", "Email"})
file.SetSheetRow("Users", "A2", &[]interface{}{1, "Alice", "alice@example.com"})
file.SetSheetRow("Users", "A3", &[]interface{}{2, "Bob", "bob@example.com"})
file.SetSheetRow("Users", "A4", &[]interface{}{3, "Charlie", "charlie@example.com"})
// 保存文件到响应中
c.Ctx.Output.Header("Content-Type", "application/octet-stream")
c.Ctx.Output.Header("Content-Disposition", `attachment; filename="exported_file.xlsx"`)
file.Write(c.Ctx.ResponseWriter)
}
```
上述代码在导出第一个表格后,创建了一个新的 Excel 文件,并将第一个表格的内容写入到名为 "Admins" 的工作表中。然后,它导出第二个表格,并将其内容写入到名为 "Users" 的工作表中。最后,将整个 Excel 文件写入到响应中以进行下载。
请注意,上述代码仅作为示例,你需要根据你的实际情况进行适当的修改和调整。
阅读全文