Go语言操作Excel利器之excelize类库详解

目录
  • 前言
  • Excelize简介
  • 安装
  • 导出 Excel 文档
  • 读取Excel文档
  • 小结

前言

在开发中一些需求需要通过程序操作excel文档,例如导出excel、导入excel、向excel文档中插入图片、表格和图表等信息,使用Excelize就可以方便的满足上述需求,本文主要总结一下Excelize的使用,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。

Excelize简介

Excelize是Go语言编写的一个用来操作Office Excel文档类库,可以使用它来读取、写入Excel文件,还支持向Excel中插入图片、图标、以及工具函数等,功能相对比较齐全,对于基本的需求完全够用,废话不多说,直接开干。

安装

go get github.com/xuri/excelize
# 如果你是通过Go Module管理的包,执行以下安装
go get github.com/xuri/excelize/v2

导出 Excel 文档

package main

import (
    "fmt"

    "github.com/xuri/excelize/v2"
)

func main() {
    f := excelize.NewFile()
    // 创建一个工作表
    index := f.NewSheet("Sheet2")
    // 设置单元格的值
    f.SetCellValue("Sheet2", "A2", "Hello world.")
    f.SetCellValue("Sheet1", "B2", 100)
    // 设置工作簿的默认工作表
    f.SetActiveSheet(index)
    // 根据指定路径保存文件
    if err := f.SaveAs("export.xlsx"); err != nil {
        fmt.Println(err)
    }
}

读取Excel文档

package main

import (
    "fmt"

    "github.com/xuri/excelize/v2"
)

func main() {
    f, err := excelize.OpenFile("Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    // 获取工作表中指定单元格的值
    cell, err := f.GetCellValue("Sheet1", "B2")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(cell)
    // 获取 Sheet1 上所有单元格
    rows, err := f.GetRows("Sheet1")
    if err != nil {
        fmt.Println(err)
        return
    }
    for _, row := range rows {
        for _, colCell := range row {
            fmt.Print(colCell, "\t")
        }
        fmt.Println()
    }
}

小结

在本文中,简单介绍了 Go通过 Excelize操作Excel 的导入、导出的使用方式,Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,可以使用它来读取、写入Excel文档,还支持向Excel中插入图片、图标、以及工具函数等,功能相对比较齐全,对于基本的需求完全够用。

网上有一个详细介绍excelize使用的中文文档,总结挺全面的,地址:xuri.me/excelize/zh…

到此这篇关于Go语言操作Excel利器之excelize类库的文章就介绍到这了,更多相关Go操作Excel之excelize内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何使用 Go 和 Excelize 构建电子表格

    目录 前言 生成费用报告 创建工作表 添加数据和创建样式 导出为 CSV 结论 前言 分析任何规模的数据的重要性怎么强调都不为过. 我们日常生活的几乎每个部分都是数据驱动的,作为开发人员,在构建任何合理大小的应用程序时,首要考虑的因素之一是使用什么数据库以及如何构建数据. 但是,它不仅限于存储数据,您还需要通过提取并以任何非技术人员都能理解的格式呈现这些数据来理解这些数据. 例如,电子商务企业每天都会产生大量数据,这意味着我们需要跟踪产品库存.月收入.财务报表等信息. 目前,有许多服务提供这些类

  • Go语言操作Excel利器之excelize类库详解

    目录 前言 Excelize简介 安装 导出 Excel 文档 读取Excel文档 小结 前言 在开发中一些需求需要通过程序操作excel文档,例如导出excel.导入excel.向excel文档中插入图片.表格和图表等信息,使用Excelize就可以方便的满足上述需求,本文主要总结一下Excelize的使用,希望对大家有所帮助.如有错误或未考虑完全的地方,望不吝赐教. Excelize简介 Excelize是Go语言编写的一个用来操作Office Excel文档类库,可以使用它来读取.写入Ex

  • 易语言数据库操作的“是否已打开”命令详解

    如果指定数据库文件已经被打开,返回真,否则返回假. 语法: 逻辑型 是否已打开 (欲测试的数据库文件名) 参数名 描 述 欲测试的数据库文件名 必需的:文本型. 例程: 说明: 当运行"全部关闭()"命令后,使用"是否已关闭 ()"命令来判断被关闭命令是否确实被关闭,如果都被关闭,则"当前打开库标签" 显示 "当前没有被打开数据库". 到此这篇关于易语言数据库操作的"是否已打开"命令详解的文章就介绍到这了,

  • C语言实现静态顺序表的实例详解

    C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识.只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作. 接下来看看静态的顺序表,直接上代码: SeqList.h #define _CRT_SECURE_NO_WARNINGS 1 #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include <stdio.h> #include <stdlib.h&g

  • C语言数据结构之图的遍历实例详解

    C语言数据结构之图的遍历实例详解 输入一组顶点,建立无向图的邻接矩阵.输入一组顶点,建立有向图的邻接表.分别对无向图和有向图进行DFS(深度优先遍历)和BFS(广度优先遍历).写出深度优先遍历的递归和非递归算法.根据建立的有向图,判断该图是否是有向无环图,若是,则输出其一种拓扑有序序列. 实现代码: #include <stdio.h> #include <stdlib.h> #define MAX 20 typedef struct ArcNode{ int adjvex; st

  • C语言之复杂链表的复制方法(图示详解)

    什么是复杂链表? 复杂链表指的是一个链表有若干个结点,每个结点有一个数据域用于存放数据,还有两个指针域,其中一个指向下一个节点,还有一个随机指向当前复杂链表中的任意一个节点或者是一个空结点.今天我们要实现的就是对这样一个复杂链表复制产生一个新的复杂链表. 复杂链表的数据结构如下: typedef int DataType; //数据域的类型 //复杂链表的数据结构 typedef struct ComplexNode { DataType _data ; // 数据 struct Complex

  • Java多线程Atomic包操作原子变量与原子类详解

    在阅读这篇文章之前,大家可以先看下<Java多线程atomic包介绍及使用方法>,了解atomic包的相关内容. 一.何谓Atomic? Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位.计算机中的Atomic是指不能分割成若干部分的意思.如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的.通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被中断,直到其执行完成) 在x86平台上,CPU提供了在指令执行期间对总线加锁的手段.

  • Java语言实现快速幂取模算法详解

    快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在朴素的方法中我们计算一个数比如5^1003%31是非常消耗我们的计算资源的,在整个计算过程中最麻烦的就是我们的5^1003这个过程 缺点1:在我们在之后计算指数的过程中,计算的数字不都拿得增大,非常的占用我们的计算资源(主要是时间,还有空间) 缺点2:我们计算的中间过程数字大的恐怖,我们现有的计算机是没有办法记录这么长的数据的,所以说我们必须要想一个更加高效的方法来解决这个问题 当我们计算AB%C的时候,最便捷的方法就是调用Ma

  • Go语言中的字符串处理方法示例详解

    1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号("")或反引号(``)定义. 双引号:"", 用于单行字符串. 反引号:``,用于定义多行字符串,内部会原样解析. 示例: // 单行 "心有猛虎,细嗅蔷薇" // 多行 ` 大风歌 大风起兮云飞扬. 威加海内兮归故乡. 安得猛士兮守四方! ` 字符串支持转义

  • C语言关键字union的定义和使用详解

    union,中文名"联合体.共用体",在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量. 但在"联合"中, 各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度 .一个联合体类型必须经过定义之后, 才能使用它,才能把一个变量声明定义为该联合体类型. 当定义结构对象时,如果没有显式地初始化它们,则会采用一般初始化规则:如果该结构对象属于动态存储类型,那么其成员具有不确定的初始值

  • C语言中关于动态内存分配的详解

    目录 一.malloc 与free函数 二.calloc 三.realloc 四.常见的动态内存的错误 [C语言]动态内存分配 本期,我们将讲解malloc.calloc.realloc以及free函数. 这是个动态内存分配函数的头文件都是 <stdlib.h>. c语言中动态分配内存的函数,可能有些初学c语言的人不免要问了:我们为什么要通过函数来实现动态分配内存呢? 首先让我们熟悉一下计算机的内存吧!在计算机的系统中大致有这四个内存区域: 1)栈:在栈里面储存一些我们定义的局部变量以及形参(

随机推荐