简介:

Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库,基于 ECMA-376 Office OpenXML标准。可以使用它来读取、写入 XLSX 文件。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)的文档,还支持向 Excel 中插入图片、图标、以及工具函数等,同时对单元格的渲染以及图表的类型有良好的支持,并且在保存后不会丢失图表样式,可以应用在各种报表系统中。

快速上手

安装

安装命令

go get github.com/xuri/excelize/v2

更新

更新命令

go get -u github.com/xuri/excelize/v2

创建excel文档

读取Excel文档

package main

import (
    "fmt"
    "github.com/360EntSecGroup-Skylar/excelize/v2"
)

func main()  {
    f := excelize.NewFile()
    //创建一个工作表
    index := f.NewSheet("Sheet2")
    //更改sheet1名字
    f.SetSheetName("Sheet1","test")
    //设置单元格的值
    f.SetCellValue("Sheet2","A2","Hello world!")
    f.SetCellValue("test","B1",100)
    //设置工作簿的默认工作表
    f.SetActiveSheet(index)

    //根据指定路径保存文件
    err := f.SaveAs("./Book1.xlsx")
    if err != nil{
        fmt.Println(err)
    }
}

读取Excel文档

package main

import (
    "fmt"
    "github.com/360EntSecGroup-Skylar/excelize/v2"
)

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

    //获取工作表中指定单元格的值
    cell ,err := f.GetCellValue("test","B1")
    if err != nil{
        fmt.Println(err.Error())
        return
    }
    fmt.Println(cell)
    //获取Sheet2上所有单元格
    rows,err := f.GetRows("Sheet2")
    for _,row := range rows{
        for _,colCell := range row{
            fmt.Print(colCell,"\t")
        }
        fmt.Println()
    }
}

工作簿

创建

func NewFile() *File

使用 NewFile 新建 Excel 工作薄,新创建的工作簿中会默认包含一个名为 Sheet1 的工作表。

打开

func OpenFile(filename string) (*File, error)

使用 OpenFile 打开已有 Excel 文档。

保存

func (f *File) Save() error

使用 Save 保存对 Excel 文档的编辑。

另存为

func (f *File) SaveAs(name string) error

使用 SaveAs 保存 Excel 文档为指定文件。

样式

创建样式

func (f *File) NewStyle(style string) (int, error)

通过给定的样式格式创建样式并返回样式索引。请注意,颜色需要使用 RGB 色域代码表示。

工作表

新建工作表

func (f *File) NewSheet(name string) int

根据给定的工作表名称添加新的工作表,并返回工作表索引。新创建的工作簿将会包含一个名为 Sheet1 的默认工作簿。

删除工作表

func (f *File) DeleteSheet(name string)

根据给定的工作表名称删除指定工作表,谨慎使用此方法,这将会影响到与被删除工作表相关联的公式、引用、图表等元素。如果有其他组件引用了被删除工作表上的值,将会引发错误提示,甚至将会导致打开工作簿失败。当工作簿中仅包含一个工作表时,调用此方法无效。

复制工作表

func (f *File) CopySheet(from, to int) error

根据给定的被复制工作表与目标工作表索引复制工作表,目标工作表索引需要开发者自行确认是否已经存在。目前支持仅包含单元格值和公式的工作表间的复制,不支持包含表格、图片、图表和透视表等元素的工作表之间的复制。

// 名称为 Sheet1 的工作表已经存在 ...
index := f.NewSheet("Sheet2")
err := f.CopySheet(1, index)
return err

设置工作表背景图片

func (f *File) SetSheetBackground(sheet, picture string) error

根据给定的工作表名称和图片地址为指定的工作表设置平铺效果的背景图片

设置默认工作表

func (f *File) SetActiveSheet(index int)

根据给定的索引值设置默认工作表,索引的值应该大于 0 且小于工作簿所包含的累积工作表总数。

获取默认工作表索引

func (f *File) GetActiveSheetIndex() int

获取默认工作表的索引,如果没有找到默认工作表将返回 0。

设置列宽度

func (f *File) SetColWidth(sheet, startcol, endcol string, width float64) error

根据给定的工作表名称(大小写敏感)、列范围和宽度值设置单个或多个列的宽度。例如设置名为 Sheet1 工作表上 A 到 H 列的宽度为 20:

f := excelize.NewFile()
err := f.SetColWidth("Sheet1","A","H",20)

来源:
https://xieys.club/excelize/