首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言Excel库:excelize

Go语言Excel库:excelize

原创
作者头像
孟斯特
修改于 2024-09-21 01:17:25
修改于 2024-09-21 01:17:25
1.1K0
举报
文章被收录于专栏:Go学习Go学习

github.com/xuri/excelize/v2 是一个功能强大的 Go 语言库,用于创建、读取、修改和写入 Microsoft Excel (.xlsx) 文件。无论你需要处理简单的表格数据还是复杂的表单、图表和样式,这个库都能为你提供全面的支持。本文将详细介绍如何使用 excelize 库,并通过代码示例演示其常用功能。

1. 安装 excelize

在使用 excelize 之前,你需要安装这个库。打开终端,在你的 Go 项目中执行以下命令:

代码语言:bash
AI代码解释
复制
go get github.com/xuri/excelize/v2

安装完成后,在代码中导入这个库:

代码语言:go
AI代码解释
复制
import "github.com/xuri/excelize/v2"

2. 创建新的 Excel 文件

excelize 支持创建新的 Excel 文件,并可以向其中写入数据。以下是创建新文件并保存的一个简单示例:

代码语言:go
AI代码解释
复制
package main

import (
    "fmt"
    "github.com/xuri/excelize/v2"
)

func main() {
    // 创建一个新的 Excel 文件
    f := excelize.NewFile()

    // 设置单元格的值
    f.SetCellValue("Sheet1", "A1", "Hello, Excelize!")
    f.SetCellValue("Sheet1", "B1", 100)

    // 保存文件
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

在这个示例中,创建了一个名为 Sheet1 的默认工作表,并在单元格 A1B1 中写入了数据。随后将 Excel 文件保存为 Book1.xlsx

3. 打开并读取现有的 Excel 文件

你可以使用 excelize.OpenFile() 方法打开现有的 Excel 文件,并读取单元格中的内容:

代码语言:go
AI代码解释
复制
package main

import (
    "fmt"
    "github.com/xuri/excelize/v2"
)

func main() {
    // 打开现有的 Excel 文件
    f, err := excelize.OpenFile("Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }

    // 获取单元格的值
    cellValue, err := f.GetCellValue("Sheet1", "A1")
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println("A1 Cell Value:", cellValue)

    // 关闭文件
    if err := f.Close(); err != nil {
        fmt.Println(err)
    }
}

上面的代码打开了一个名为 Book1.xlsx 的文件,读取 Sheet1 中单元格 A1 的值并输出到控制台。

4. 工作表操作

excelize 支持创建、删除和操作多个工作表。你可以为每个 Excel 文件创建多个工作表,并在不同工作表之间切换。

创建新工作表

可以使用 NewSheet() 方法创建新的工作表:

代码语言:go
AI代码解释
复制
f := excelize.NewFile()
index, err := f.NewSheet("Sheet2")
if err!= nil {
	panic(err)
}
f.SetCellValue("Sheet2", "A1", "Hello from Sheet2")
f.SetActiveSheet(index)
f.SaveAs("Book2.xlsx")

删除工作表

你可以使用 DeleteSheet() 方法删除工作表:

代码语言:go
AI代码解释
复制
f.DeleteSheet("Sheet2")

重命名工作表

可以通过 SetSheetName() 方法重命名工作表:

代码语言:go
AI代码解释
复制
f.SetSheetName("Sheet1", "NewSheetName")

5. 单元格操作

在 Excel 文件中,你可以轻松地操作单元格内容。excelize 提供了丰富的 API 用于写入、读取和修改单元格数据。

写入单元格

使用 SetCellValue() 可以向指定单元格写入数据。可以写入多种类型的数据,包括字符串、数字、布尔值等:

代码语言:go
AI代码解释
复制
f.SetCellValue("Sheet1", "A1", "Go语言")
f.SetCellValue("Sheet1", "B1", 12345)
f.SetCellValue("Sheet1", "C1", true)

读取单元格

你可以使用 GetCellValue() 方法读取单元格的数据,返回的数据总是字符串类型:

代码语言:go
AI代码解释
复制
value, err := f.GetCellValue("Sheet1", "A1")
if err != nil {
    fmt.Println(err)
}
fmt.Println("A1 Cell Value:", value)

6. 单元格类型判断

在读取单元格数据时,有时需要判断单元格的数据类型。excelize 提供了 GetCellType() 方法,可以用来判断单元格的数据类型。

代码语言:go
AI代码解释
复制
cellType, err := f.GetCellType("Sheet1", "A1")
if err != nil {
    fmt.Println(err)
    return
}

switch cellType {
case excelize.CellTypeNumber:
    fmt.Println("A1 contains a number.")
case excelize.CellTypeInlineString:
    fmt.Println("A1 contains a string.")
case excelize.CellTypeBool:
    fmt.Println("A1 contains a boolean.")
}

7. 单元格样式

excelize 支持丰富的样式设置,包括字体、对齐、边框和填充色等。

设置单元格字体和对齐

你可以通过 NewStyle() 方法为单元格设置字体样式和对齐方式:

代码语言:go
AI代码解释
复制
style, err := f.NewStyle(&excelize.Style{
	Font: &excelize.Font{
		Bold:   true,
		Italic: true,
		Family: "Arial",
		Size:   12,
		Color:  "#FF0000",
	},
	Alignment: &excelize.Alignment{
		Horizontal: "center",
		Vertical:   "center",
	},
})
if err != nil {
	fmt.Println(err)
	return
}
f.SetCellStyle("Sheet1", "A1", "A1", style)

设置单元格边框

可以通过以下方式为单元格设置边框:

代码语言:go
AI代码解释
复制
borderStyle, err := f.NewStyle(&excelize.Style{
	Border: []excelize.Border{
		{
			Type:  "left",
			Color: "#000000",
			Style: 1,
		},
		{
			Type:  "right",
			Color: "#000000",
			Style: 1,
		},
	},
})
if err!= nil {
	panic(err)
}
f.SetCellStyle("Sheet1", "A1", "A1", borderStyle)

8. 插入图片

通过 AddPicture() 方法,可以将图片插入到 Excel 工作表中:

代码语言:go
AI代码解释
复制
if err := f.AddPicture("Sheet1", "B2", "image.png", nil); err != nil {
    fmt.Println(err)
}

9. 合并单元格

可以使用 MergeCell() 方法合并单元格:

代码语言:go
AI代码解释
复制
f.MergeCell("Sheet1", "A1", "B1")

10. 流式读写大数据

对于大规模的数据处理,excelize 提供了流式读写 API,避免内存占用过高。

使用 StreamWriter 实现大规模数据的流式写入:

代码语言:go
AI代码解释
复制
streamWriter, err := f.NewStreamWriter("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for row := 1; row <= 1000000; row++ {
    cell := fmt.Sprintf("A%d", row)
    streamWriter.SetRow(cell, []interface{}{"Large Data"})
}
streamWriter.Flush()

11. 错误处理

操作 Excel 文件时,常见的错误包括文件不存在、工作表或单元格不存在等。处理这些错误时,需使用 Go 的 error 类型:

代码语言:go
AI代码解释
复制
if err := f.SaveAs("Book1.xlsx"); err != nil {
    fmt.Println("Error:", err)
}

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。

blog: mengbin

Github: mengbin92

cnblogs: 恋水无意

腾讯云开发者社区孟斯特


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
Pandas表格样式设置,超好看!
通过这一方法,增强数据的呈现,使信息的探索和理解不仅内容丰富,而且具有视觉吸引力。
小F
2024/01/05
9780
Pandas表格样式设置,超好看!
pandas100个骚操作:一行 pandas 代码搞定 Excel “条件格式”!
本篇是pandas100个骚操作系列的第 7 篇:一行 pandas 代码搞定 Excel “条件格式”!
Python数据科学
2021/01/29
2.9K0
pandas100个骚操作:一行 pandas 代码搞定 Excel “条件格式”!
系统性的学会 Pandas, 看这一篇就够了!
Numpy已经能够帮助我们处理数据,能够结合matplotlib解决部分数据展示等问题,那么pandas学习的目的在什么地方呢?
小F
2021/08/20
4.3K0
系统性的学会 Pandas, 看这一篇就够了!
【Python】五种Pandas图表美化样式汇总
Pandas是一种高效的数据处理库,它以dataframe和series为基本数据类型,呈现出类似excel的二维数据。
黄博的机器学习圈子
2021/07/07
3.1K0
【Python】五种Pandas图表美化样式汇总
再见,Excel!一行Pandas代码,即可实现漂亮的 “条件格式”!
对比Excel,我们可以发现:Pandas基本可以实现所有的Excel的功能,并且比Excel更方便、简洁,其实很多操作我们在过去的文章中,或多或少都讲述过。
CDA数据分析师
2021/01/25
1.7K0
再见,Excel!一行Pandas代码,即可实现漂亮的 “条件格式”!
Pandas 2.2 中文官方教程和指南(十九·二)
我们使用以下方法传递您的样式函数。这两种方法都接受一个函数(以及一些其他关键字参数),并以某种方式将其应用于 DataFrame,呈现 CSS 样式。
ApacheCN_飞龙
2024/04/25
4910
Pandas 2.2 中文官方教程和指南(十九·二)
Pandas也能修改样式?快速给你的数据换个Style!
在之前的很多文章中我们都说过,Pandas与openpyxl有一个很大的区别就是openpyxl可以进行丰富的样式调整,但其实在Pandas中每一个DataFrame都有一个Style属性,我们可以通过修改该属性来给数据添加一些基本的样式。
刘早起
2020/07/02
2.1K0
Pandas也能修改样式?快速给你的数据换个Style!
Python代码|Python做数据可视化的代码
从代码中学习Python知识和Python与数据相关的知识,是一个有效的方法。例如:想了解Python做数据可视化的工作。我们可以从互联网找一些Python做数据可视化的代码进行阅读,调试和迁移。这样做的好处,突出实用性。同时,我们在结合联想的学习方法,对所用到的可视化函数,做个更深入地了解和使用。我借用《数据科学和人工智能》这个公众号,分享一些我在实际的数据问题时,从网上找到的Python代码,希望这些代码对大家有作用和启发。
陆勤_数据人网
2020/07/02
1.3K0
Pandas 2.2 中文官方教程和指南(十九·一)
本节演示使用 Styler 类可视化表格数据。有关使用图表进行可视化的信息,请参阅图表可视化。本文档是以 Jupyter Notebook 编写的,可在此处查看或下载这里。
ApacheCN_飞龙
2024/04/25
5670
Pandas 2.2 中文官方教程和指南(十九·一)
用 Style 方法提高 Pandas 数据的颜值
Pandas的style用法在大多数教程中见的比较少,它主要是用来美化DataFrame和Series的输出,能够更加直观地显示数据结果。
Python数据科学
2020/05/25
2.4K0
用 Style 方法提高 Pandas 数据的颜值
厉害了,Pandas表格还能五彩斑斓的展示数据,究竟是怎么做到的呢?
在使用Pandas分析数据时,我们可能经常需要来高亮显示某些数据,以便一眼看出这些数据的不同之处,今天小编就来分享一下如何在“Pandas”的表格当中高亮某些数据,通过这篇文章,读者们可以知道怎么去
用户6888863
2021/07/19
8580
pandas技巧7
sort_values主要是对某个属性中出现的各个元素进行排序,默认是升序,字母是a-z
皮大大
2021/03/02
3970
Pandas专家总结:指定样式保存excel数据的 “N种” 姿势!
对于这个pandas对象,如果我们需要将其保存为excel,有那些操作方式呢?首先,最简单的,直接保存:
Python进阶者
2021/01/08
19.6K0
Pandas专家总结:指定样式保存excel数据的 “N种” 姿势!
【Python】这25个Pandas高频实用技巧,不得不服!
今天给大家准备了25个pandas高频实用技巧,让你数据处理速度直接起飞。文章较长,建议收藏!
黄博的机器学习圈子
2022/11/07
7.1K0
【Python】这25个Pandas高频实用技巧,不得不服!
一行 pandas 代码搞定 Excel 条件格式!
Excel的 “条件格式” 是非常棒的功能,通过添加颜色条件可以让表格数据更加清晰的凸显出统计特性。
Python数据科学
2023/08/29
5120
一行 pandas 代码搞定 Excel 条件格式!
太酷了,用Python制作足球可视化图表!
最近不少小伙伴都会熬夜看欧洲杯。今年的欧洲杯相比起往年的欧洲杯来说,可谓是冷门频出,出乎意料。
小F
2021/07/23
6180
利用Pandas库实现Excel条件格式自动化
在Excel菜单栏里,默认(选择)开始菜单,在中间部位有个条件格式控件,里面就是关于表格条件格式的方方面面。主要包含突出显示单元格规则、最前/最后规则、数据条、色阶、图标集以及规则管理等。
张俊红
2021/08/20
6.9K0
利用Pandas库实现Excel条件格式自动化
羡慕 Excel 的高级选择与文本框颜色呈现?Pandas 也可以拥有!! ⛵
用过 Excel 的数据分析师,对 Excel 的『条件选择』与『格式呈现』功能大都印象深刻。下方动图演示了 Excel『数据选择&底色填充高亮』功能。如果我们需要『选择大于100的所有产品取值并对单元格填充红色』,直接如下图所示,在『条件格式』中选择『突出显示单元格规则』即可进行设置。
ShowMeAI
2022/08/09
3.3K0
羡慕 Excel 的高级选择与文本框颜色呈现?Pandas 也可以拥有!! ⛵
Python数据可视化,完整版操作指南(建议收藏)
让我们看一下使用Python进行数据可视化的主要库以及可以使用它们完成的所有类型的图表。我们还将看到建议在每种情况下使用哪个库以及每个库的独特功能。
龙哥
2021/01/25
2K0
Python数据可视化,完整版操作指南(建议收藏)
分享30个超级好用的Pandas实战技巧
今天小编来和大家分享几个Pandas实战技巧,相信大家看了之后肯定会有不少的收获。
用户6888863
2022/06/08
7110
分享30个超级好用的Pandas实战技巧
推荐阅读
相关推荐
Pandas表格样式设置,超好看!
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 1. 安装 excelize
  • 2. 创建新的 Excel 文件
  • 3. 打开并读取现有的 Excel 文件
  • 4. 工作表操作
    • 创建新工作表
    • 删除工作表
    • 重命名工作表
  • 5. 单元格操作
    • 写入单元格
    • 读取单元格
  • 6. 单元格类型判断
  • 7. 单元格样式
    • 设置单元格字体和对齐
    • 设置单元格边框
  • 8. 插入图片
  • 9. 合并单元格
  • 10. 流式读写大数据
  • 11. 错误处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档