Excelize

简介

Excelize 是 Go 语言编写的用于操作 Office Excel 文档类库,基于 ECMA-376 Office OpenXML 标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的 XLSX 文档。相比较其他的开源类库,Excelize 支持写入原本带有图片(表)、透视表和切片器等复杂样式的文档,还支持向 Excel 文档中插入图片与图表,并且在保存后不会丢失文档原有样式,可以应用于各类报表系统中。使用本类库要求使用的 Go 语言为 1.10 或更高版本,完整的 API 使用文档请访问 godoc.org 或查看 参考文档。

快速上手

安装

go get github.com/360EntSecGroup-Skylar/excelize

创建 Excel 文档

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

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

读取 Excel 文档

下面是读取 Excel 文档的例子:

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

在 Excel 文档中创建图表

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

package mainimport ("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}// 根据指定路径保存文件err = f.SaveAs("./Book1.xlsx")if err != nil {fmt.Println(err)}
}

向 Excel 文档中插入图片

package mainimport ("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}// 插入图片err = f.AddPicture("Sheet1", "A2", "./image1.png", "")if err != nil {fmt.Println(err)}// 在工作表中插入图片,并设置图片的缩放比例err = f.AddPicture("Sheet1", "D2", "./image2.jpg", `{"x_scale": 0.5, "y_scale": 0.5}`)if err != nil {fmt.Println(err)}// 在工作表中插入图片,并设置图片的打印属性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)}// 保存文件err = f.Save()if err != nil {fmt.Println(err)}
}

社区合作

欢迎您为此项目贡献代码,提出建议或问题、修复 Bug 以及参与讨论对新功能的想法。 XML 符合标准: part 1 of the 5th edition of the ECMA-376 Standard for Office Open XML。

开源许可

本项目遵循 BSD 3-Clause 开源许可协议,访问 https://opensource.org/licenses/BSD-3-Clause 查看许可协议文件。

Excel 徽标是 Microsoft Corporation 的商标,项目的图片是一种改编。

本类库中部分 XML 结构体的定义参考了开源项目:tealeg/xlsx,遵循 BSD 3-Clause License 开源许可协议。
gopher.{ai,svg,png} 由 Takuya Ueda 创作,遵循 Creative Commons 3.0 Attributions license 创作共用授权条款。

Go + Excel 学习 Excelize相关推荐

  1. Go + Excel 学习 Excelize rows.go

    Copyright 2016 - 2019 The excelize Authors. 版权所有2016-2019优秀作者. All rights reserved. 保留所有权利. Use of t ...

  2. Excel学习经验总结

    Excel学习经验总结   学习任何知识都是讲究方法的,学习Excel也不例外.正确的学习方法能使人不断进步,而且是以最快的速度进步.错误的方法则会使人止步不前,甚至失去学习的兴趣.没有人天生就是Ex ...

  3. (小白)Excel学习笔记

    Excel学习笔记 欢迎阅读我的Excel学习笔记 我的第一篇博客 入门 表格设计&自动加总函数 欢迎阅读我的Excel学习笔记 最近闲来无事,在b站上看见一个up主的Excel教学视频(本来 ...

  4. 安装命令:pip install xlrd ,pandas操作Excel学习笔记__7000

    pandas操作Excel学习笔记_loc和iloc_7000 pandas操作Excel学习笔记__7000 1.安装环境:pandas需要处理Excel的模块xlrd,所以需要提前安装xlrd.不 ...

  5. Excel - 学习 - 笔记6: Excel 函数 - filter 函数

    友好的目录: 0. 前言: 1. 函数语法: 2. 函数实操: 3. 参考文章: 0. 前言: 这阶段系统多学习一些Excel知识, 目前是Excel学习系列的第六篇文章, 本文章主要讲解 filte ...

  6. 王佩丰Excel学习笔记

    王佩丰Excel学习笔记 算术不需要写等号:选项-高级-转换Lotus 1-2-3 公式 两个表格排列:视图-全部重排 插入多张工作表:先选择多张表格再添加 插入多行:先选择多行再添加 改变列顺序:按 ...

  7. 王佩丰excel学习笔记(一):第一——二讲

    目录 第一讲 第二讲 不努力就会落后,嘤嘤嘤.一周没发文章,就眼看着我的阅读量一步步往下掉,但我也不知道应该写啥,索性来写写我的excel学习笔记(主要原因是我看完就忘了,又懒得翻视频,干脆写下来). ...

  8. WPS Excel学习记录(Continue)

    WPS Excel学习记录(Continue) 1.常用函数 SUMIF SUMIF(range,criteria,sum_range) SUMIF('条件区域','求和条件','求和范围') &qu ...

  9. wps之excel学习(三)

    wps之excel学习(三) 公式 运算符 引用运算符 算术运算符 文本连接符 比较运算符 优先级 数组公式 公式 组成: 等号.函数.引用.运算符和常量. Excel 中的公式始终以等号开头. 运算 ...

最新文章

  1. 阿里巴巴启动2017全球创客大赛 四大洲共设25个赛区
  2. HttpServletRequestWrapper的使用
  3. c语言,c++求最大公因数与最小公倍数方法集合
  4. pytorch学习笔记(九):softmax回归的简洁实现
  5. C Primer Plus 第8章 字符输入/输出和输入确认 8.11 编程练习答案
  6. RGB-D = 普通的RGB三通道彩色图像 + Depth Map
  7. 网站转换APP源代码 WebAPP源代码 网站生成APP源代码 Flutter项目 带控制端
  8. 2.2 BubbleSort
  9. 43张图详解计算机网络,看这一篇就够了
  10. ASCII码格式转回汉字
  11. 让 AE 输出 MPEG
  12. Ubuntu安装Matlab其Simulink没有菜单栏的解决方案
  13. pcsx2模拟器怎么设置流畅?
  14. 申请android11xColorOS,零时差适配安卓11!ColorOS 11升级公测版体验:丝滑顺畅
  15. STM32CubeIDE的MCU开发
  16. G711 G723 G729,带宽计算
  17. 利用Memory窗口查看内存信息
  18. Java完美实现access库_Java之纯JDBC连接Access(值得收藏)
  19. ps不显示安装字体解决办法
  20. Find命令的使用和解析

热门文章

  1. Android学习记录1--布局的类型
  2. TCP和UDP的聊天
  3. Cocos2dx 中 倒计时保留2位数写法
  4. SQL 2005清除事务日志
  5. Repeater 得到checkbox值
  6. 银行业务队列简单模拟 (25 分)c语言c++
  7. Linux内核地址空间为什么1GB,为什么Windows为其系统地址空间预留1Gb(或2 Gb)?
  8. android 点击跳过,android开发里跳过的坑——button不响应点击事件
  9. C语言学习之企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提成10%;
  10. STL源码剖析---迭代器失效小结