0


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

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

文章目录


一、表格样式

表格是根据时间把数据放入到1-12月为列标题,行为1-31天的表格中,如下所示:
在这里插入图片描述

二、使用步骤

1.引入库

代码如下(示例):

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){caseint, 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.最后结果

在这里插入图片描述


标签: golang 前端 excel

本文转载自: https://blog.csdn.net/m0_69665878/article/details/141467933
版权归原作者 ZL_567 所有, 如有侵权,请联系我们删除。

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

还没有评论