以下是使用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>
在实际应用中,你可能还需要对上传文件进行大小、类型等方面的限制以确保系统安全。




