使用go实现导入Rxcel数据到数据库并渲染到页面上

发布于:2025-03-27 ⋅ 阅读:(60) ⋅ 点赞:(0)

github.com/360EntSecGroup-Skylar/excelize

github.com/tealeg/xlsx

可以使用以上两个库

代码如下:

// jsonResult 返回 JSON 格式的结果
func (c *TemplateController) jsonResult(code int, msg string, data interface{}) {
	c.Data["json"] = map[string]interface{}{
		"code": code,
		"msg":  msg,
		"data": data,
	}
	c.ServeJSON()
}

// ImportTemplate 导入系统
func (c *TemplateController) ImportTemplate() {
	// 获取上传的文件
	file, h, err := c.GetFile("fileInput")
	if err != nil {
		fmt.Println("获取文件时发生错误:", err)
		c.Ctx.WriteString("获取文件失败")
		return
	}

	ext := path.Ext(h.Filename)

	// 验证后缀名是否符合要求
	AllowExtMap := map[string]bool{
		".xlsx": true,
	}
	if _, ok := AllowExtMap[ext]; !ok {
		c.Ctx.WriteString("后缀名不符合上传要求")
		return
	}

	// 打开Excel文件
	xlsx, err := excelize.OpenReader(file)
	if err != nil {
		fmt.Println("打开Excel文件失败:", err)
		return
	}

	rows := xlsx.GetRows("Template")

	// 遍历Excel的每一行
	for i, row := range rows {
		if i > 0 { // 跳过表头
			Id := row[0]
			ProductCode := row[1]
			Creator := row[2]
			Parent := row[3]
			Remark := row[4]

			// 打印准备插入的数据
			//fmt.Printf("准备插入数据: Id=%s, ProductCode=%s, Creator=%s, Parent=%s, Remark=%s\n", Id, ProductCode, Creator, Parent, Remark)

			// 插入数据到数据库
			_, err := Db.Exec("INSERT INTO Materia (Id, ProductCode, Creator, Parent, Remark) VALUES (?, ?, ?, ?, ?)", Id, ProductCode, Creator, Parent, Remark)
			if err != nil {
				fmt.Println("插入数据失败:", err) // 打印具体的错误信息
				continue                    // 继续处理下一行
			}
			fmt.Println("插入成功:", Id, ProductCode, Creator, Remark)
		}
	}

	c.Ctx.WriteString("文件已上传,数据已保存到数据库")
}

导入完成


网站公告

今日签到

点亮在社区的每一天
去签到