ZBLOG

golang 使用go-xlsx和gin实现上传文件格式化展现

以下是使用go-xlsx和gin实现上传Excel文件并格式化展现的示例代码:

package main

import (
    "fmt"
    "log"
    "net/http"
    "os"

    "github.com/gin-gonic/gin"
    "github.com/tealeg/xlsx"
)

func main() {
    // 初始化Gin框架
    router := gin.Default()

    // 定义文件上传接口
    router.POST("/upload", func(c *gin.Context) {
        file, err := c.FormFile("file")
        if err != nil {
            c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error()))
            return
        }

        // 保存上传的Excel文件到服务器本地磁盘中,注意:需要提前创建存储目录
        filePath := "/path/to/save/uploaded/file.xlsx"
        if err := c.SaveUploadedFile(file, filePath); err != nil {
            c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
            return
        }

        // 打开Excel文件
        xlFile, err := xlsx.OpenFile(filePath)
        if err != nil {
            c.String(http.StatusInternalServerError, fmt.Sprintf("open Excel file failed: %s", err.Error()))
            return
        }

        var html string

        // 遍历所有工作表,将每个工作表转换为HTML格式,并拼接到一起
        for _, sheet := range xlFile.Sheets {
            html += "<table>"
            for _, row := range sheet.Rows {
                html += "<tr>"
                for _, cell := range row.Cells {
                    html += fmt.Sprintf("<td>%s</td>", cell.String())
                }
                html += "</tr>"
            }
            html += "</table>"
        }

        // 返回HTML格式化后的表格数据
        c.HTML(http.StatusOK, "upload.html", gin.H{
            "html": html,
        })
    })

    // 运行Gin框架
    if err := router.Run(":8080"); err != nil {
        log.Fatal(err)
    }
}

上述代码中,我们通过定义文件上传接口来接收用户上传的Excel文件。将Excel文件保存到服务器本地磁盘后,使用go-xlsx打开并遍历所有工作表,将每个工作表转换为HTML格式,并拼接到一起。最后返回HTML格式化后的表格数据。

需要注意的是,在使用之前需要先安装go-xlsx和gin框架:

go get github.com/tealeg/xlsx
go get github.com/gin-gonic/gin

此外,还需准备一个upload.html模板文件来渲染返回给用户的HTML页面。该模板文件可以包含以下内容:

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Uploaded File</title>
</head>

<body>
    {{.html}}
</body>

</html>

在实际应用中,你可能还需要对上传文件进行大小、类型等方面的限制以确保系统安全。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=3852

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?