当前位置: 首页 > 软件库 > 程序开发 > Excel开发包 >

Excelize

Go 语言(golang) Excel (xlsx) 电子表格文档基础库
授权协议 BSD
开发语言 Google Go
所属分类 程序开发、 Excel开发包
软件类型 开源软件
地区 国产
投 递 者 应翰飞
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Excelize Go 语言 Excel 基础库

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。入选 2020 Gopher China - Go 领域明星开源项目 (GSP)、2018 开源中国码云 Gitee 最有价值开源项目 GVP,目前已成为 Go 语言最受欢迎的 Excel 文档基础库。

知名用户

Go Excelize 知名用户

安装

go get github.com/xuri/excelize
  • 如果您使用 Go Modules 管理软件包,请使用下面的命令来安装最新版本。
go get github.com/xuri/excelize/v2

创建 Excel 文档

下面是一个创建 Excel 文档的简单例子:

package main

import (
    "fmt"

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

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

读取 Excel 文档

下面是读取 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()
    }
}

在 Excel 文档中创建图表

使用 Excelize 生成图表十分简单,仅需几行代码。您可以根据工作表中的已有数据构建图表,或向工作表中添加数据并创建图表。

使用 Excelize 向 Excel 文档插入图片

package main

import (
    "fmt"

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

func main() {
    f := excelize.NewFile()
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    for idx, row := range [][]interface{}{
        {nil, "Apple", "Orange", "Pear"}, {"Small", 2, 3, 3},
        {"Normal", 5, 2, 4}, {"Large", 6, 7, 8},
    } {
        cell, err := excelize.CoordinatesToCellName(1, idx+1)
        if err != nil {
            fmt.Println(err)
            return
        }
        f.SetSheetRow("Sheet1", cell, &row)
    }
    if err := f.AddChart("Sheet1", "E1", &excelize.Chart{
        Type: "col3DClustered",
        Series: []excelize.ChartSeries{
            {
                Name:       "Sheet1!$A$2",
                Categories: "Sheet1!$B$1:$D$1",
                Values:     "Sheet1!$B$2:$D$2",
            },
            {
                Name:       "Sheet1!$A$3",
                Categories: "Sheet1!$B$1:$D$1",
                Values:     "Sheet1!$B$3:$D$3",
            },
            {
                Name:       "Sheet1!$A$4",
                Categories: "Sheet1!$B$1:$D$1",
                Values:     "Sheet1!$B$4:$D$4",
            }},
        Title: excelize.ChartTitle{
            Name: "Fruit 3D Clustered Column Chart",
        },
    }); err != nil {
        fmt.Println(err)
        return
    }
    // 根据指定路径保存文件
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

向 Excel 文档中插入图片

package main

import (
    "fmt"
    _ "image/gif"
    _ "image/jpeg"
    _ "image/png"

    "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)
        }
    }()
    // 插入图片
    if err := f.AddPicture("Sheet1", "A2", "image.png", nil); err != nil {
        fmt.Println(err)
    }
    // 在工作表中插入图片,并设置图片的缩放比例
    if err := f.AddPicture("Sheet1", "D2", "image.jpg",
        &excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
        fmt.Println(err)
    }
    // 在工作表中插入图片,并设置图片的打印属性
    enable, disable := true, false
    if err := f.AddPicture("Sheet1", "H2", "image.gif",
        &excelize.GraphicOptions{
            PrintObject:     &enable,
            LockAspectRatio: false,
            OffsetX:         15,
            OffsetY:         10,
            Locked:          &disable,
        }); err != nil {
        fmt.Println(err)
    }
    // 保存工作簿
    if err = f.Save(); err != nil {
        fmt.Println(err)
    }
}
  • Golang操作Excel的模块Excelize – 设置单元格的值 新建excel文件 excelize.NewFile() 获取当前活动的sheet页索引 func (f *File) GetActiveSheetIndex() (index int) 指定单元格设置值 func (f *File) SetCellValue(sheet, axis string, value interfac

  • 本文实现的功能如下: 1、接收前端传过来的json数据 2、将json数据解析到结构体 3、引入第三方工具包excelize,将结构体的数据渲染到表格内 4、引入内置包net/smtp,将excel作为附件,将邮件发送到固定收件人 下面直接上代码: func send_email(writer http.ResponseWriter,req *http.Request){ body, err :

  • 读取Excel的数据,转换成Golang中的数据类型 这个案例主要是读取excel中单元格的数据 打开指定的文件(TMP_01.xlsx),读取文件内容,并输出为go的数据格式 打开已存在的文件 func OpenFile(filename string, opt ...Options) (*File, error) 按行读取所有的数据 func (f *File) GetRows(sheet s

  • 常用的工具函数 打开文件 func OpenFile(filename string, opt ...Options) (*File, error) 新建文件 func excelize.NewFile() *excelize.File 拆分单元格坐标 单元格坐标字符串拆分成 列名称 行索引 func excelize.SplitCellName(cell string) (string, int

 相关资料
  • 本文向大家介绍GO语言(golang)基础知识,包括了GO语言(golang)基础知识的使用技巧和注意事项,需要的朋友参考一下 今天说一些golang的基础知识,还有你们学习会遇到的问题,先讲解hello word package name 包机制,每一个独立的go程序都需要有一个package main的申明,主要是要为下边入口函数main()做申明的,import和java一样导入包用的 就是

  • 我是Python新手。我需要将程序中的一些数据写入电子表格。我在网上搜索过,似乎有很多可用的软件包(xlwt、XlsXcessive、openpyxl)。其他人建议写信给一家公司。csv文件(从未使用过csv,也不了解它是什么)。 程序非常简单。我有两个列表(float)和三个变量(string)。我不知道这两个列表的长度,它们可能不会是相同的长度。 我希望布局如下图: 粉红色列将具有第一个列表的

  • 本章介绍 Java 的语言基础。

  • 问题内容: 我需要将程序中的一些数据写入电子表格。我在网上搜索过,似乎有很多可用的软件包(xlwt,XlsXcessive,openpyxl)。其他人则建议写入.csv文件(从未使用过CSV,也不真正了解它是什么)。 该程序非常简单。我有两个列表(浮点数)和三个变量(字符串)。我不知道两个列表的长度,它们的长度可能不一样。 粉色列将具有第一个列表的值,绿色列将具有第二个列表的值。 那么最好的方法是

  • 问题内容: 我有一个带有许多选项卡的Excel工作簿。每个选项卡与所有其他选项卡具有相同的标题集。我想将每个选项卡中的所有数据合并到一个数据帧中(而无需重复每个选项卡的标题)。 到目前为止,我已经尝试过: 可以在parse参数中使用表示“所有电子表格”的内容吗?还是这是错误的方法? 提前致谢! 更新:我尝试过: 但这不是“工作”。 问题答案: 这是一种实现方法-将所有工作表加载到数据帧的字典中,然

  • Go是一门类似C的编译型语言,但是它的编译速度非常快。这门语言的关键字总共也就二十五个,比英文字母还少一个,这对于我们的学习来说就简单了很多。先让我们看一眼这些关键字都长什么样: break default func interface select case defer go map struct chan e

  • 前面一节我们为大家介绍了什么是 Gradle?Gradle 是一个构建工具,它的构建脚本是基于 Groovy 或是 Kotlin 语言编写的。 今天我们就来看下 Groovy 的基础语法。Groovy 结合了 Java、Python、Ruby 等当下几大流行语言的优点。它可以说是从 Java 中衍生出来的,为什么这么说呢?因为它的语法和 Java 非常的相似,它的文件也是可以编译为 .class

  • 什么是 Go 语言 Go 语言 Golang 是 Google 公司 2009 年推出的一门 高级编程言语,目的是为了解决: 现有主流编程语言 明显落后于硬件发展速度的问题 不能合理利用多核CPU的优势提升软件系统性能的问题 软件复杂度越来越高, 维护成本也越来越高的问题 企业开发中不得不在快速开发和性能之间艰难抉择的问题 科普小知识 1. 静态语言 1.1 一般都需要通过编译器(compiler