SlideShare a Scribd company logo
1 of 15
共建开源 创新先锋
Excelize
主办:GitCode
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
作者简介
续日,阿里巴巴技术专家,曾就职于百度、360 等公司从事网络服务
框架与基础库研发,前百度 Go 语言编程委员会成员
开源软件 Excelize、aurora、TOML-to-Go、xgen 作者
GitHub: @xuri
Twitter: @xurime
Blog: https://xuri.me
Excelize —— 国产电子表格文档基础库的开源之路
1. 企业信息化建设与数字化重塑
2. 电子表格办公文档的广泛应用
3. 走向开放的文档格式国际标准
4. 云原生时代的国产电子表格文档基础库
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
企业信息化建设与数字化重塑
数据业务化
业务数据化 企业数字化转型
数据资产化 业务场景运营
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
电子表格办公文档的广泛应用
• 科学的数据思维
• 规范的表格设计
• 高效的处理分析
• 可视化呈现驱动决策
以 Excel 为代表的电子表格文档被广泛应用于教育、医疗、金融等各行各业
底层逻辑与思考
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
走向开放的文档格式国际标准
Apache POI (Java) Apache OpenOffice (C++) NPOI (C#) PHPOffice (PHP) SheetJS (JavaScript)
…
支持电子表格文档操作的部分开源基础库
OOXML ISO/IEC 29500 ECMA-376 Specification
SVG
SOAP
ODF
OOXML
C#
C++/CLI
MIME
XSLT
XHTML
DITA
0
200
400
600
800
1000
1200
0 1000 2000 3000 4000 5000 6000 7000
Technical
Committee
effort
(days)
Specification length (pages)
Specification Speed
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
云原生时代的国产电子表格文档基础库
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500
国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支
持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组
件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计
算、边缘计算等系统。入选 2020 Gopher China - Go 领域明星开源项目 (GSP)、2018 年开源中国
码云最有价值开源项目 (Gitee Most Valuable Project) https://github.com/xuri/excelize
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
Excelize 开源之路
1.0.0 首次发布:支持插入图
片、图表、合并单元格等
1.1.0支持条件格式、复制工作表
1.2.0 兼容 Go 1.9,支持堆积图表
1.3.0 行列分组、单元格批量赋值
1.4.0 支持数据验证、色值转换
1.4.1 搜索单元格、保护工作表
2.0.0 引入流式读写,性能进一步提升
2.0.1 页眉页脚、文档属性设置
2.0.2嵌入 VBA 工程、数据透视表
2.0.2嵌入 VBA 工程、数据透视表
2.1.0支持非 UTF-8 编码文档
2.0.2 嵌入 VBA 工程、数据透视表
2.2.0支持图表工作表、富文本、分页
2.3.0新增工作表视图属性设置
2.3.1兼容 Go 1.15,支持读加密 Excel
2.3.2 数据透视表功能增强、兼容性提升
2.4.0 新增 152 项公式函数支持
2.4.1 流式设置列宽、合并单元格
2.5.0 即将发布:2022年1月3日
Excelize GitHub Star History
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
数据验证
Crypto 加解密
单位转换
表格 / 过滤器
数据透视表
基础能力
数据处理能力
条件格式
图片 / 图表
2D / 3D 处理
簇状/堆积/面积图
柱形/锥形/饼图
气泡/散点/折线图
时间处理
属性设置能力
工作簿 / 工作表
可见性设置
属性设置
页眉页脚
搜索能力
页面布局
行/列处理
工作表属性
视图属性
数据保护
流式读写
单元格
数据类型支持
选区合并
超链接
公式处理
单元格样式
字典
富文本
批注处理
样式索引
计算缓存
文件格式识别
样式处理能力
模型处理
模型组件化 模型校验 计算引擎 升级扩展能力 模型纠错验证
VBA 脚本
Excelize 技术架构图
Excelize Technical Architecture Diagram
OPC 封装与解构
媒体格式支持
依赖关系处理
元数据解析校验
扩展标记处理
边框样式 字体样式
冻结窗格
行高 / 列宽 色值计算
数字格式
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
Excelize 读写工作簿
f := excelize.NewFile()
// 创建一个工作表
index := f.NewSheet("Sheet2")
// 设置单元格的值
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// 获取工作表中指定单元格的值
cell, err := f.GetCellValue("Sheet1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// 设置工作簿的默认工作表
f.SetActiveSheet(index)
// 根据指定路径保存文件
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
f, err := excelize.OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() { // 关闭工作簿
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
rows, err := f.GetRows("Sheet1") // 获取 Sheet1 上所有单元格
if err != nil {
fmt.Println(err)
}
for _, row := range rows {
for _, colCell := range row {
fmt.Print(colCell, "t")
}
}
创建工作簿、设置单元格的值: 打开已有工作簿、读取工作表中单元格的值:
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
Excelize 数据透视分析
f.AddPivotTable(&excelize.PivotTableOption{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet1!$G$2:$M$24",
Rows: []excelize.PivotTableField{
{Data: "Month",
DefaultSubtotal: true},
{Data: "Year"}},
Filter: []excelize.PivotTableField{
{Data: "Region"}},
Columns: []excelize.PivotTableField{
{Data: "Type",
DefaultSubtotal: true}},
Data: []excelize.PivotTableField{
{Data: "Sales",
Name: "销售额汇总",
Subtotal: "Sum"}},
RowGrandTotals: true,
ColGrandTotals: true,
ShowDrill: true,
ShowRowHeaders: true,
ShowColHeaders: true,
ShowLastColumn: true,
})
按月对各区域在售的商品销售额进行分类汇总,并支
持按销售区域、时间和分类进行筛选
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
Excelize 创建图表
f, err := excelize.OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
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": "三维簇状柱形图" }
}`)
Ref: Excelize 支持的 52 种图表
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
Excelize 高性能流式读写
生成包含大规模数据的电子表格文档 102400 行 x 50 列, 6 字符 / 单元格
0 5 10 15 20 25 30
Excelize 2.4.1 Streaming Write
go1.17.1 darwin/amd64
Excelize 2.4.1
go1.17.1 darwin/amd64
Time Cost (s)
Less is better
0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
Excelize 2.4.1 Streaming Write
go1.17.1 darwin/amd64
Excelize 2.4.1
go1.17.1 darwin/amd64
Memory Usage (MB)
Less is better
CSDN: 开源 123 导航 项目直播活动
Excelize 国产电子表格文档基础库的开源之路
欢迎参与开源贡献
Excelize Roadmap
• 更多接口将提供并发安全支持
• 对包含大规模数据文档读写性能的持续优化
• 公式计算引擎增加更多计算函数
• 复杂条件格式的设置、数据预测支持等
• 灵活控制图表样式
• 数据透视表、数据透视图、切片器功能
• 更加精准的数字格式表达式解析
• 工作簿加密
• 提供更多可用流式读写接口
更多相关资源
GitCode - https://gitcode.net/xuri/excelize
CSDN 社区 - https://bbs.csdn.net/forums/excelize
简体中文文档 - https://xuri.me/excelize/zh-hans
请备注: Excelize 公众号
三万奖金池、项目周边好礼 等你来瓜分!
扫描二维码一起参与吧!
主办:GitCode

More Related Content

Similar to Excelize云原生时代国产电子表格文档基础库的开源之路

Js的国(转载)
Js的国(转载)Js的国(转载)
Js的国(转载)
Leo Hui
 
Lotus domino开发教程
Lotus domino开发教程Lotus domino开发教程
Lotus domino开发教程
dyzm_2000
 
C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4
Tao He
 
使用Lua提高开发效率
使用Lua提高开发效率使用Lua提高开发效率
使用Lua提高开发效率
gowell
 
ch9-pv1-the-extended-filesystem-family
ch9-pv1-the-extended-filesystem-familych9-pv1-the-extended-filesystem-family
ch9-pv1-the-extended-filesystem-family
yushiang fu
 

Similar to Excelize云原生时代国产电子表格文档基础库的开源之路 (20)

Flex国际化I18N解决方案
Flex国际化I18N解决方案Flex国际化I18N解决方案
Flex国际化I18N解决方案
 
C语言
C语言C语言
C语言
 
程式人雜誌 -- 2015 年5月號
程式人雜誌 -- 2015 年5月號程式人雜誌 -- 2015 年5月號
程式人雜誌 -- 2015 年5月號
 
程式人雜誌 2015年五月
程式人雜誌 2015年五月程式人雜誌 2015年五月
程式人雜誌 2015年五月
 
Js的国(转载)
Js的国(转载)Js的国(转载)
Js的国(转载)
 
Excel VBA
Excel VBAExcel VBA
Excel VBA
 
Lotus domino开发教程
Lotus domino开发教程Lotus domino开发教程
Lotus domino开发教程
 
gnutool
gnutoolgnutool
gnutool
 
Gnu
GnuGnu
Gnu
 
C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4C语言benchmark覆盖信息收集总结4
C语言benchmark覆盖信息收集总结4
 
使用Lua提高开发效率
使用Lua提高开发效率使用Lua提高开发效率
使用Lua提高开发效率
 
Spark introduction - In Chinese
Spark introduction - In ChineseSpark introduction - In Chinese
Spark introduction - In Chinese
 
SharePoint平台客製與開發-2
SharePoint平台客製與開發-2SharePoint平台客製與開發-2
SharePoint平台客製與開發-2
 
ch9-pv1-the-extended-filesystem-family
ch9-pv1-the-extended-filesystem-familych9-pv1-the-extended-filesystem-family
ch9-pv1-the-extended-filesystem-family
 
Log collection
Log collectionLog collection
Log collection
 
Fastjson那些事
Fastjson那些事Fastjson那些事
Fastjson那些事
 
Php
PhpPhp
Php
 
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
 
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
 
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in R
 

Excelize云原生时代国产电子表格文档基础库的开源之路

  • 2. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 作者简介 续日,阿里巴巴技术专家,曾就职于百度、360 等公司从事网络服务 框架与基础库研发,前百度 Go 语言编程委员会成员 开源软件 Excelize、aurora、TOML-to-Go、xgen 作者 GitHub: @xuri Twitter: @xurime Blog: https://xuri.me
  • 3. Excelize —— 国产电子表格文档基础库的开源之路 1. 企业信息化建设与数字化重塑 2. 电子表格办公文档的广泛应用 3. 走向开放的文档格式国际标准 4. 云原生时代的国产电子表格文档基础库
  • 4. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 企业信息化建设与数字化重塑 数据业务化 业务数据化 企业数字化转型 数据资产化 业务场景运营
  • 5. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 电子表格办公文档的广泛应用 • 科学的数据思维 • 规范的表格设计 • 高效的处理分析 • 可视化呈现驱动决策 以 Excel 为代表的电子表格文档被广泛应用于教育、医疗、金融等各行各业 底层逻辑与思考
  • 6. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 走向开放的文档格式国际标准 Apache POI (Java) Apache OpenOffice (C++) NPOI (C#) PHPOffice (PHP) SheetJS (JavaScript) … 支持电子表格文档操作的部分开源基础库 OOXML ISO/IEC 29500 ECMA-376 Specification SVG SOAP ODF OOXML C# C++/CLI MIME XSLT XHTML DITA 0 200 400 600 800 1000 1200 0 1000 2000 3000 4000 5000 6000 7000 Technical Committee effort (days) Specification length (pages) Specification Speed
  • 7. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 云原生时代的国产电子表格文档基础库 Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支 持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组 件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计 算、边缘计算等系统。入选 2020 Gopher China - Go 领域明星开源项目 (GSP)、2018 年开源中国 码云最有价值开源项目 (Gitee Most Valuable Project) https://github.com/xuri/excelize
  • 8. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 Excelize 开源之路 1.0.0 首次发布:支持插入图 片、图表、合并单元格等 1.1.0支持条件格式、复制工作表 1.2.0 兼容 Go 1.9,支持堆积图表 1.3.0 行列分组、单元格批量赋值 1.4.0 支持数据验证、色值转换 1.4.1 搜索单元格、保护工作表 2.0.0 引入流式读写,性能进一步提升 2.0.1 页眉页脚、文档属性设置 2.0.2嵌入 VBA 工程、数据透视表 2.0.2嵌入 VBA 工程、数据透视表 2.1.0支持非 UTF-8 编码文档 2.0.2 嵌入 VBA 工程、数据透视表 2.2.0支持图表工作表、富文本、分页 2.3.0新增工作表视图属性设置 2.3.1兼容 Go 1.15,支持读加密 Excel 2.3.2 数据透视表功能增强、兼容性提升 2.4.0 新增 152 项公式函数支持 2.4.1 流式设置列宽、合并单元格 2.5.0 即将发布:2022年1月3日 Excelize GitHub Star History
  • 9. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 数据验证 Crypto 加解密 单位转换 表格 / 过滤器 数据透视表 基础能力 数据处理能力 条件格式 图片 / 图表 2D / 3D 处理 簇状/堆积/面积图 柱形/锥形/饼图 气泡/散点/折线图 时间处理 属性设置能力 工作簿 / 工作表 可见性设置 属性设置 页眉页脚 搜索能力 页面布局 行/列处理 工作表属性 视图属性 数据保护 流式读写 单元格 数据类型支持 选区合并 超链接 公式处理 单元格样式 字典 富文本 批注处理 样式索引 计算缓存 文件格式识别 样式处理能力 模型处理 模型组件化 模型校验 计算引擎 升级扩展能力 模型纠错验证 VBA 脚本 Excelize 技术架构图 Excelize Technical Architecture Diagram OPC 封装与解构 媒体格式支持 依赖关系处理 元数据解析校验 扩展标记处理 边框样式 字体样式 冻结窗格 行高 / 列宽 色值计算 数字格式
  • 10. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 Excelize 读写工作簿 f := excelize.NewFile() // 创建一个工作表 index := f.NewSheet("Sheet2") // 设置单元格的值 f.SetCellValue("Sheet2", "A2", "Hello world.") f.SetCellValue("Sheet1", "B2", 100) // 获取工作表中指定单元格的值 cell, err := f.GetCellValue("Sheet1", "B2") if err != nil { fmt.Println(err) return } fmt.Println(cell) // 设置工作簿的默认工作表 f.SetActiveSheet(index) // 根据指定路径保存文件 if err := f.SaveAs("Book1.xlsx"); err != nil { fmt.Println(err) } f, err := excelize.OpenFile("Book1.xlsx") if err != nil { fmt.Println(err) return } defer func() { // 关闭工作簿 if err := f.Close(); err != nil { fmt.Println(err) } }() rows, err := f.GetRows("Sheet1") // 获取 Sheet1 上所有单元格 if err != nil { fmt.Println(err) } for _, row := range rows { for _, colCell := range row { fmt.Print(colCell, "t") } } 创建工作簿、设置单元格的值: 打开已有工作簿、读取工作表中单元格的值:
  • 11. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 Excelize 数据透视分析 f.AddPivotTable(&excelize.PivotTableOption{ DataRange: "Sheet1!$A$1:$E$31", PivotTableRange: "Sheet1!$G$2:$M$24", Rows: []excelize.PivotTableField{ {Data: "Month", DefaultSubtotal: true}, {Data: "Year"}}, Filter: []excelize.PivotTableField{ {Data: "Region"}}, Columns: []excelize.PivotTableField{ {Data: "Type", DefaultSubtotal: true}}, Data: []excelize.PivotTableField{ {Data: "Sales", Name: "销售额汇总", Subtotal: "Sum"}}, RowGrandTotals: true, ColGrandTotals: true, ShowDrill: true, ShowRowHeaders: true, ShowColHeaders: true, ShowLastColumn: true, }) 按月对各区域在售的商品销售额进行分类汇总,并支 持按销售区域、时间和分类进行筛选
  • 12. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 Excelize 创建图表 f, err := excelize.OpenFile("Book1.xlsx") if err != nil { fmt.Println(err) return } 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": "三维簇状柱形图" } }`) Ref: Excelize 支持的 52 种图表
  • 13. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 Excelize 高性能流式读写 生成包含大规模数据的电子表格文档 102400 行 x 50 列, 6 字符 / 单元格 0 5 10 15 20 25 30 Excelize 2.4.1 Streaming Write go1.17.1 darwin/amd64 Excelize 2.4.1 go1.17.1 darwin/amd64 Time Cost (s) Less is better 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 Excelize 2.4.1 Streaming Write go1.17.1 darwin/amd64 Excelize 2.4.1 go1.17.1 darwin/amd64 Memory Usage (MB) Less is better
  • 14. CSDN: 开源 123 导航 项目直播活动 Excelize 国产电子表格文档基础库的开源之路 欢迎参与开源贡献 Excelize Roadmap • 更多接口将提供并发安全支持 • 对包含大规模数据文档读写性能的持续优化 • 公式计算引擎增加更多计算函数 • 复杂条件格式的设置、数据预测支持等 • 灵活控制图表样式 • 数据透视表、数据透视图、切片器功能 • 更加精准的数字格式表达式解析 • 工作簿加密 • 提供更多可用流式读写接口 更多相关资源 GitCode - https://gitcode.net/xuri/excelize CSDN 社区 - https://bbs.csdn.net/forums/excelize 简体中文文档 - https://xuri.me/excelize/zh-hans 请备注: Excelize 公众号