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

    • 导入库
    • 基本用法
    • 封装

在Go语言中,可以使用第三方库来读取Excel文件。
常用的库是github.com/tealeg/xlsx,提供了处理Excel文件的功能。

导入库

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

go get github.com/tealeg/xlsx

基本用法

使用以下示例代码来读取Excel文件:

package mainimport ("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][]map[string]string, error) {resultMap := make(map[string][]map[string]string)// 打开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 := []map[string]string{}// 遍历每一行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 = append(sheetMap, rowMap)fmt.Println(fmt.Sprintf("Row%d", rowIndex+1))// sheetMap[fmt.Sprintf("Row%d", rowIndex+1)] = rowMap}// 使用工作表名作为键,将该工作表的map添加到结果map中resultMap[sheet.Name] = sheetMap}return resultMap, nil
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/22100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer系列:Greedy Search贪婪搜索解码流程原理解析

解码器预测流程简述 Encoder-Decoder这类框架需要在解码器中分别拿到前文已经翻译的输入,以及编码器的输出这两个输入,一起预测出下一个翻译的单词。在训练阶段,一个句子通过右移一位的方式转化为从第二个词到最后一个词的逐位预测任务&…

Springboot vue elementui 前后端分离 事故灾害案例管理系统

源码链接 系统演示:https://pan.baidu.com/s/1hZQ25cpI-B4keFsZdlzimg?pwdgw48

【Golang】go语言写入数据并保存Excel表格

导入包创建文件添加表格添加行添加单元格保存文件封装 导入包 首先,安装github.com/tealeg/xlsx库。可以通过以下命令在终端中安装: go get github.com/tealeg/xlsx创建文件 指定好文件的名字 fileName : "D:\\a.xlsx"再判断文件是否存在&…

Java集合概述

分类 分为两大类:Collection接口类和Map接口类 这两个接口都继承自一个共同的接口:Iterable接口,意为可迭代的 Iterable接口当中有一个Iterator迭代器接口对象,作为接口的变量(public static final修饰)…

Win10字体模糊?记好这5个方法,解决问题很简单!

“我的电脑是win10的,不知道是什么原因,电脑字体总是很模糊,大家有什么方法可以解决这个问题吗?” 在数字时代的浪潮中,Win10以其出色的性能和丰富的功能赢得了广大用户的青睐。然而,就像任何一款操作系统一…

广东电网突破2亿千瓦,华火新能源电燃灶引领绿色烹饪“灶”未来

近日,广东电网统调装机容量历史性突破2亿千瓦,标志着广东省在电力发展上迈出了坚实的步伐。这一重大成就不仅彰显了广东在能源领域的强劲实力,也为华火新能源电燃灶等绿色技术的普及应用提供了有力的支撑。 广东电网统调装机容量的突破&#…

用ffmpeg对视频添加语音、背景音乐和字幕的方法

先看代码: ffmpeg.exe ^ -i "D:/test/video.mp4" ^ -i "D:/test/voice.mp3" ^ -i "D:/test/music.mp3" ^ -i "D:/test/voice.srt" ^ -filter_complex "[1:a]volume1.0,asetptsPTS-STARTPTS[a_voice];[2:a]volume0.5,…

【 0 基础 Docker 极速入门】镜像、容器、常用命令总结

Docker Images(镜像)生命周期 Docker 是一个用于创建、部署和运行应用容器的平台。为了更好地理解 Docker 的生命周期,以下是相关概念的介绍,并说明它们如何相互关联: Docker: Docker 是一个开源平台&#…

重生奇迹mu五大王国

勇者大陆王国 奇迹大陆的战士,他们因为非常重视剑,而且穿着黑色的衣服,所以叫他们魔剑士。古代勇者大陆王国的魔剑士们都是用铠甲伪装自己的。但是这些个联合国统一成一个帝国之后,勇者大陆王国渐渐成为一个小城市。千年之后的现…

数据持久化第七课-URL重写与Ajax

数据持久化第七课-URL重写与Ajax 一.预习笔记 1.URL重写(对网页地址进行保护) 首先编写module,实现对网络地址的处理 其次就是module的配置 最后验证url重写技术 2.Ajax数据交互 编写后端响应数据 处理跨域的配置问题 运行项目得到后端响应数据的地址 编写前端ajax进行数据请…

程序人生 - 前端拿到后端数据,不能直接用还要再处理,合理吗?

前言 从后端拿到的 list 是散的,需要前端遍历 list 根据 item 的某些属性把同类型的 item 合并到一个 list 中,这样合理吗?我觉得这个不是应该在后端完成的吗? 这种撕扯,让我想起很久之前的一个笑话。我有个朋友之前…

EXCEL上传得时候特殊情况

比如excel里面不全是我们需要的,还有一些需要处理EXCEL中的日期,去掉‘-’等 DATA:begin_row TYPE i VALUE 2,begin_col TYPE i VALUE 1,end_row TYPE i VALUE 9999,end_col TYPE i VALUE 90,filename TYPE rlgrap-filename,gt_excel TYPE zalsme…

AI产品经理系列-如何使用kimi快速撰写用户故事(含提示词)

在AI时代,可能人人都可成为产品经理。 之前我们聊过如何使用kimi协助完成产品需求文档,如何写竞品分析报告,这一篇我们聊聊用户故事,如何使用kimi协助撰写产品需求文档中的用户故事。 在此之前我们先了解下什么是用户故事&#…

深入理解Django Serializer及其在Go语言中的实现20240604

深入理解Django Serializer及其在Go语言中的实现 在现代Web开发中,前后端分离已成为主流架构模式。作为开发者,我们经常需要处理数据的序列化和反序列化,以便在前后端之间传递数据。在Django中,Serializer是一个强大的工具&#…

Spring类加载机制揭秘:深度解析“验证”阶段

1. 引言 在Spring框架中,类加载机制是一个至关重要的环节,它确保了应用程序在运行时能够正确地加载、链接和初始化所需的类。其中,验证(Verification)作为类加载机制的一个重要阶段,起到了至关重要的作用。…

车牌号码智能监测识别摄像机

车牌号码智能监测识别摄像机是一项革命性的技术,为交通管理和安全提供了全新的解决方案。这种摄像机利用先进的人工智能和图像识别技术,能够实时监测道路上的车辆,并准确识别车辆的车牌号码,为交通管理和安全提供了强有力的支持。…

java 工作排序(Job Sequencing Problem)

给定一个作业数组,其中每个作业都有一个截止期限,如果作业在截止期限之前完成,则可获得相关利润。此外,每个作业都占用一个单位时间,因此任何作业的最小可能截止期限都是 1。如果一次只能安排一项作业,则最…

代码随想录算法训练营Day60 | 84.柱状图中最大的矩形 | Python | 个人记录向

注:今天是代码随想录训练营的最后一天啦!!! 本文目录 84.柱状图中最大的矩形做题看文章 以往忽略的知识点小结个人体会 84.柱状图中最大的矩形 代码随想录:84.柱状图中最大的矩形 Leetcode:84.柱状图中最…

解决使用Python检查本地网络中运行的Web服务器的问题

如果我们要检查本地网络中运行的 Web 服务器,可以使用 Python 的 socket 模块来进行网络连接测试。以下是一个简单的示例代码,演示如何检查本地网络中运行的 Web 服务器: 1、问题背景 在学习如何使用 Python 时,一位用户希望编写…

从零开始:腾讯云轻量应用服务器上部署MaxKB项目(基于LLM大语言模型的知识库问答系统)

使用腾讯云轻量应用服务器部署和使用MaxKB项目 前言 一, MaxKB介绍 MaxKB是基于LLM大语言模型的知识库问答系统,旨在成为企业的最强大脑。它支持开箱即用,无缝嵌入到第三方业务系统,并提供多模型支持,包括主流大模型…