GO语言从前端传来的表格数据和表格标题导出到Excel表格中

ZL_567 2024-09-16 12:03:02 阅读 94

提示:使用Go将前端表格数据和标题导出到Excel表格中,你可以使用第三方库,如"xlsx"。数据的操作流程遵循:分析数据格式→确定数据对象→解析→构建表格→生成文件。以下是一个简单的示例,展示了如何在Gin框架中实现该功能:

文章目录

一、表格样式二、使用步骤1.引入库2.创建路由2.创建exportToExcel函数3.最后结果


一、表格样式

表格是根据时间把数据放入到1-12月为列标题,行为1-31天的表格中,如下所示:

在这里插入图片描述

二、使用步骤

1.引入库

代码如下(示例):

<code>package main

import (

"fmt"

"github.com/tealeg/xlsx"

)

2.创建路由

代码如下(示例):

func main() { -- -->

router := gin.Default()

router.GET("/export", exportToExcel)

fmt.Println("Server running at http://localhost:8080/")

log.Fatal(router.Run(":8080"))

}

前端可以使用POST请求将表格数据发送到/export路由。

2.创建exportToExcel函数

代码如下(示例):

func exportToExcel(c *gin.Context) {

// 假设数据格式为map[string]interface{}

formData := make(map[string]interface{ })

// 从前端获取数据

err := c.BindJSON(formData)

if err!= nil {

c.JSON(http.StatusBadRequest, gin.H{ "error": err.Error()})

return

}

// 提取标题和数据

columns := formData["columns"].([]interface{ })

data := formData["data"].([]interface{ })

// 创建Excel文件

file := xlsx.NewFile()

sheet, err := file.AddSheet("Sheet1")

if err!= nil {

c.JSON(http.StatusInternalServerError, gin.H{ "error": err.Error()})

return

}

// 添加标题行

titleRow := sheet.AddRow()

for _, column := range columns {

// 假设标题信息存储在title字段中

titleCell := titleRow.AddCell()

titleCell.Value = column.(map[string]interface{ })["title"].(string)

}

// 添加数据行

for i, rowData := range data {

values := rowData.(map[string]interface{ })

row := sheet.AddRow()

for j := 0; j < len(columns); j++ {

// 假设数据键对应于列标题

dataIndex := columns[j].(map[string]interface{ })["dataIndex"].(string)

cell := row.AddCell()

if value, ok := values[dataIndex]; ok {

// 根据数据类型进行相应处理

switch v := value.(type) {

case int, int8, int16, int32, int64:

cell.SetInt64(value.(int64))

case float32, float64:

cell.SetFloat(value.(float64))

case string:

cell.Value = value.(string)

default:

fmt.Println("Unhandled data type:", v)

}

} else {

// 若数据不存在,则写一个空字符串

cell.Value = ""

}

}

// 设置行高,根据需要调整

row.SetHeightCM(1)

// 在第一列设置行号

row.Cells[0].Value = strconv.Itoa(i + 1)

}

// 设置列宽,根据需要调整

for j := 0; j < len(columns); j++ {

columnWidth := 5

sheet.Col(j).SetWidth(float64(columnWidth))

}

// 保存文件

err = file.Save("your_file_name.xlsx")

if err!= nil {

c.JSON(http.StatusInternalServerError, gin.H{ "error": err.Error()})

return

}

// 返回成功响应

c.JSON(http.StatusOK, gin.H{ "message": "Excel file exported successfully"})

}

请注意,你需要将"your_file_name.xlsx"替换为实际要创建的Excel文件名,并根据需要调整列宽和行高等样式。

前端可以使用POST请求将表格数据发送到/export路由,后端使用c.BindJSON(formData)来获取数据。然后,后端处理数据,创建Excel文件,写入标题和数据,最后保存文件。如果一切顺利,后端将返回一个成功的响应给前端。

3.最后结果

在这里插入图片描述




声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。