前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go开源库Excelize介绍,电子Excel表格操作强大的库

Go开源库Excelize介绍,电子Excel表格操作强大的库

作者头像
杨永贞
发布2021-03-02 16:27:01
1.9K0
发布2021-03-02 16:27:01
举报
文章被收录于专栏:独行猫a的沉淀积累总结

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。

项目作者是续 日,现任阿里巴巴软件工程师,曾就职百度,奇虎360公司。前百度Go语言编程委员会成员,开源软件爱好者,https://github.com/xuri。

可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支 持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组 件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。

可应用于各类报表平台、云计 算、边缘计算等系统。入选 2020 Gopher China - Go 领域明星开源项目 (GSP)、2018 年开源中国 码云最有价值开源项目 (Gitee Most Valuable Project) https://github.com/xuri/excelize

详细介绍和使用地址:https://xuri.me/excelize/zh-hans/

视频介绍:https://www.sohu.com/a/376820227_120230553

项目初衷

提起电子表格大家都比较熟悉,以 Excel 为代表的经典电子表格已经应用在各行各业当中,根据相关研究机构的估算数据,办公文档产生的数量每年至少以数十亿的规模增长。

电子表格文档作为一种数据承载的重要载体,在很多领域都有应用。作为开发者,一些情况下需要用编程的方式操作这些电子表格文档,起初为了满足从报表系统中导出数据的需要,Excelize 的作者续日调研了市面上多个主流语言的相关基础库,希望能够找到一个高性能、支持复杂样式并且还能够跨平台的解决方案,可是经过一番寻找并没有找到能够满足业务复杂需要的开源实现,就这样他决定从文档格式标准开始入手,从零开始使用 Go 语言实现一个兼顾性能和兼容性的电子表格文档基础库。总结发起 Excelize 项目的初衷可以归结为以下 6 点:

  • 电子表格办公文档有着广泛的应用
  • 自动化电子表格文档处理系统与云计算、边缘计算场景融合
  • 开发者需要通过编程方式处理 Excel 文档
  • 对复杂或包含大规模数据的 Excel 文档进行操作的需求
  • 文档格式领域难以完全实现的复杂技术标准
  • 开源领域、Go 语言缺少具备良好兼容性的基础库

简单的使用:

向 Excel 中插入图表

代码语言:javascript
复制
package main
 
import (
    "fmt"
 
    "github.com/360EntSecGroup-Skylar/excelize"
)
 
func main() {
    categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
    values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
    f := excelize.NewFile()
    for k, v := range categories {
        f.SetCellValue("Sheet1", k, v)
    }
    for k, v := range values {
        f.SetCellValue("Sheet1", k, v)
    }
    err := f.AddChart("Sheet1", "E1", `{"type":"col3DClustered","series":[{"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":{"name":"Fruit 3D Clustered Column Chart"}}`)
    if err != nil {
        fmt.Println(err)
        return
    }
    // Save xlsx file by the given path.
    err = f.SaveAs("./Book1.xlsx")
    if err != nil {
        fmt.Println(err)
    }
}

Excel 中插入图片:

代码语言:javascript
复制
package main
 
import (
    "fmt"
    _ "image/gif"
    _ "image/jpeg"
    _ "image/png"
 
    "github.com/360EntSecGroup-Skylar/excelize"
)
 
func main() {
    f, err := excelize.OpenFile("./Book1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    // Insert a picture.
    err = f.AddPicture("Sheet1", "A2", "./image1.png", "")
    if err != nil {
        fmt.Println(err)
    }
    // Insert a picture to worksheet with scaling.
    err = f.AddPicture("Sheet1", "D2", "./image2.jpg", `{"x_scale": 0.5, "y_scale": 0.5}`)
    if err != nil {
        fmt.Println(err)
    }
    // Insert a picture offset in the cell with printing support.
    err = f.AddPicture("Sheet1", "H2", "./image3.gif", `{"x_offset": 15, "y_offset": 10, "print_obj": true, "lock_aspect_ratio": false, "locked": false}`)
    if err != nil {
        fmt.Println(err)
    }
    // Save the xlsx file with the origin path.
    err = f.Save()
    if err != nil {
        fmt.Println(err)
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 向 Excel 中插入图表
  • Excel 中插入图片:
相关产品与服务
边缘可用区
腾讯云边缘可用区(TencentCloud Edge Zone,TEZ)是腾讯云的本地扩展,适用于解决计算、存储和服务可用性问题。腾讯云边缘可用区可为您带来云的诸多优势,例如弹性、可扩展性和安全性。借助腾讯云边缘可用区,您可以在靠近最终用户的地理位置运行对延迟敏感的应用程序,基本消除延迟问题。腾讯云边缘可用区提供与中心节点一致的体验,助力业务下沉,具备更低延时、更广覆盖、更少成本等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档