go语言读取Excel表格中的数据

news/2024/7/21 6:01:27 标签: excel, golang, go

在Go语言中,你可以使用第三方库来读取Excel文件。一个常用的库是github.com/tealeg/xlsx,它提供了处理Excel文件的功能。以下是一个简单的例子,演示如何使用该库读取Excel文件:

导入库

首先,你需要安装github.com/tealeg/xlsx库。可以通过以下命令在终端中安装:

go get github.com/tealeg/xlsx

基本用法

然后,你可以使用以下示例代码来读取Excel文件:

package main

import (
	"fmt"
	"github.com/tealeg/xlsx"
)

func main() {
	// 打开Excel文件
	excelFileName := "path/to/your/excel/file.xlsx"
	xlFile, err := xlsx.OpenFile(excelFileName)
	if err != nil {
		fmt.Printf("Error opening Excel file: %s\n", err)
		return
	}

	// 遍历每个工作表
	for _, sheet := range xlFile.Sheets {
		fmt.Printf("Sheet Name: %s\n", sheet.Name)

		// 遍历每一行
		for _, row := range sheet.Rows {
			// 遍历每个单元格
			for _, cell := range row.Cells {
				text := cell.String()
				fmt.Printf("%s\t", text)
			}
			fmt.Println()
		}
	}
}

确保将"path/to/your/excel/file.xlsx"替换为你的实际Excel文件的路径。此代码将遍历Excel文件的每个工作表、每一行和每个单元格,并将单元格内容打印到控制台。

封装

一般我们会习惯把读取Excel的这种常用的模块封装成函数:

// ReadExcelToMap 读取Excel文件并返回一个map
func ReadExcelToMap(excelFileName string) (map[string]interface{}, error) {
	resultMap := make(map[string]interface{})

	// 打开Excel文件
	xlFile, err := xlsx.OpenFile(excelFileName)
	if err != nil {
		return nil, fmt.Errorf("Error opening Excel file: %s", err)
	}

	// 遍历每个工作表
	for _, sheet := range xlFile.Sheets {
		sheetMap := make(map[string]interface{})

		// 遍历每一行
		for rowIndex, row := range sheet.Rows {
			rowMap := make(map[string]string)

			// 遍历每个单元格
			for colIndex, cell := range row.Cells {
				text := cell.String()
				colLetter := xlsx.ColIndexToLetters(colIndex)
				rowMap[colLetter] = text
			}

			// 使用行号作为键,将该行的map添加到工作表的map中
			sheetMap[fmt.Sprintf("Row%d", rowIndex+1)] = rowMap
		}

		// 使用工作表名作为键,将该工作表的map添加到结果map中
		resultMap[sheet.Name] = sheetMap
	}

	return resultMap, nil
}


http://www.niftyadmin.cn/n/5278140.html

相关文章

平台统一鉴权、登录、跨域方案

cookie、tooken、session的区别 cookie 存储在客户端,在请求的时候会自动携带。存储大小4KB。 优点:兼容性好,容易实现。 缺点:需要单独解决跨域问题。 会遭受CSRF攻击。 存储在客户端不安全。 session: 存储在服务端。存储大小无…

C++带参数的单例模式

在 C 中实现带参数的单例模式可以通过以下步骤完成: 1. 创建一个类,该类负责管理单例对象的创建和访问,并提供一个静态方法来获取单例对象。 2. 在该类中添加一个私有的静态成员变量,用于保存单例对象的实例。 3. 添加一个静态…

Flink系列之:Savepoints

Flink系列之:Savepoints 一、Savepoints二、分配算子ID三、Savepoint 状态四、算子五、触发Savepoint六、Savepoint 格式七、触发 Savepoint八、使用 YARN 触发 Savepoint九、使用 Savepoint 停止作业十、从 Savepoint 恢复十一、跳过无法映射的状态恢复十二、Resto…

最大数 max(x,y,z)

题目描述 已知: 输入 a,b,c,求 m 。 把求三个数的最大数 max⁡(max(x,y,z) 分别定义成函数和过程来做。 输入格式 输入只有一个行三个整数,分别为 a,b,c。 输出格式 输出一行一个小数,为答案&#xf…

用户管理第2节课-idea 2023.2 后端--删除表,从零开始

一、鱼皮清空model文件夹下 二、鱼皮清空mapper文件夹下 三、删除 test 测试类下的部分代码 3.1删除SampleTest 3.2删除部分代码 UserCenterApplicationTests

Spring Cloud微服务 - Eureka注册中心详解与实际项目应用

简介 在如今的软件开发领域,微服务架构已成为一种流行的架构模式,它将一个大型应用拆分成多个小的、独立运行的微服务。而为了管理这些微服务的注册与发现,Spring Cloud提供了Eureka注册中心。本文将深入探讨Eureka注册中心的工作原理&#…

MyBatis-Plus如何 关闭SQL日志打印

前段时间公司的同事都过来问我,hua哥公司的项目出问题了,关闭不了打印sql日记,项目用宝塔自己部署的,磁盘满了才发现大量的打印sql日记,他们百度过都按照网上的配置修改过不起作用,而且在调试时候也及为不方…

原生微信小程序中使用-阿里字体图标-详解

步骤一 1、打开阿里巴巴矢量图标库 网址:iconfont-阿里巴巴矢量图标库 2、搜索字体图标,鼠标悬浮点击添加入库 3、按如下步骤添加到自己的项目 步骤二 进入微信开发者工具 1、创建 fonts文件夹 > iconfont.wxss 文件,将刚才的代码复制…