当前位置: 首页 > news >正文

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

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("文件已上传,数据已保存到数据库")
}

导入完成

相关文章:

  • java项目之基于ssm的个人博客网站(源码+文档)
  • 【MySQL篇】索引特性,索引的工作原理以及索引的创建与管理
  • Git 使用指南:从设置用户信息到项目提交的全流程教程(持续更新)
  • Electron 项目开机自启动
  • 【netstat和ss】Windows和Linux下的,网络连接排查简单案例
  • 【前端面试题】计算机网络相关
  • ROS2 部署大语言模型节点
  • 【AVRCP】深度解析 AVRCP 定时器机制:从 TRCP/TMTC/TMTP 看蓝牙遥控的实时性保障
  • HAL_TIM_IC_CaptureCallback 函数
  • 蓝桥杯1463:货物摆放问题详解——数学思维与代码优化
  • 【PICO】开发环境配置准备
  • 小爱控制OK影视搜索视频-HomeAssistant详细自动化流程
  • 车载通信方案为何选择CAN/CANFD?
  • 聚水潭数据集成到MySQL的最佳实践分享
  • docker desktop拉取镜像出问题
  • Isaac Sim与Isaac Lab初使用
  • 嵌入式单片机程序的映像文件解读
  • Windows下VSCode的安装
  • 【C++项目实战】:基于正倒排索引的Boost搜索引擎(1)
  • Codeforces Round 1009 (Div. 3) C(位掩码)
  • 巴州建设工程信息网/企业seo培训
  • 静态网站开发项目实验报告/怎么开网站平台
  • 怎么把网站建设推广出去/阿里云搜索
  • 做电器推广的网站/百度上传自己个人简介
  • 网订率推广技巧/windows优化大师和360哪个好
  • 天津网站优化公司电话/网站推广的方法有哪几种