Go 语言 Excel 文档类库 excelize 发布 1.4.1 版本

2019-01-04 10:58:19 +08:00
 luxurioust

Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库,基于 ECMA-376 OOXML Spec。可以使用它来读取、写入 XLSX 文件,相比较其他的开源类库,Excelize 支持操作带有数据透视表、切片器、图表与图片的 Excel 并支持向 Excel 中插入图片与创建简单图表,可应用于各种报表系统中。

GitHub: github.com/360EntSecGroup-Skylar/excelize

2019 年 1 月 3 日 社区发布了 1.4.1 版本,该版本包含了很多新功能和错误修复。完整的更改列表可查看 change log.

此版本中最显著的变化包括:

新增功能

问题修复

其他

3783 次点击
所在节点    Go 编程语言
20 条回复
myyou
2019-01-04 11:09:59 +08:00
不错,现在的 Python 项目也用到了这个库
iamecho
2019-01-04 11:10:52 +08:00
专业,顶
yepinf
2019-01-04 11:11:50 +08:00
赞, 已 star
bellucci1964
2019-01-04 12:43:00 +08:00
借楼问一下 go 操作 word 有没有好用的库
luxurioust
2019-01-04 13:05:22 +08:00
scnace
2019-01-04 13:11:18 +08:00
@bellucci1964 我刚写 Go 的时候 写了一个 github.com/scbizu/report
CCCCiiii
2019-01-04 13:38:55 +08:00
小哥哥,公司招聘高级 golang,方便加个微信聊聊么
jjx
2019-01-04 16:27:51 +08:00
不错, 现在就缺个类似 xhtml2pdf 一样的库了
reus
2019-01-04 16:48:04 +08:00
只用 gooxml
hellos
2019-01-04 16:48:55 +08:00
@CCCCiiii 哇,挖 360 的墙角
leon0903
2019-01-04 16:59:02 +08:00
这个挺好的,我们目前后端生成 excel 就是用的这个,为了方便生成通用的 excel,我还在这上面通过自定义 go 的 tag 写了一个简单的通用生成 excel 的函数。
kylix
2019-01-04 19:28:12 +08:00
收藏备用
xupefei
2019-01-04 19:33:27 +08:00
提醒一下 LZ,用 Excel 的 logo 你确定不侵权吗?
ybilly
2019-01-15 20:46:24 +08:00
最近刚使用这个库做了个通用的库

https://github.com/billyplus/luatable

以前我用过一个 golang 的库,是 tealeg 的,后来看到他在项目说明里面推荐 360 的库,说 360 的库功能更全面,所以这次我先尝试了一下 360 的库。结果不是很理想,读取数据明显比 tealeg 的慢,应该是 xml 解析没有优化,但是对于我的这种导表工具来说,读取速度比功能更有意义。

我用这两个库做了个对比。

总运行时间:4.97s
其中:
github.com/360EntSecGroup-Skylar/excelize.(*File).GetRows (67.00%, 3.33s)

```
Flat Flat% Sum% Cum Cum% Name Inlined?
0 0.00% 0.00% 3.49s 70.22% github.com/spf13/cobra.(*Command).Execute
0 0.00% 0.00% 3.49s 70.22% github.com/spf13/cobra.(*Command).ExecuteC
0 0.00% 0.00% 3.49s 70.22% main.main
0 0.00% 0.00% 3.49s 70.22% runtime.main
0 0.00% 0.00% 3.48s 70.02% github.com/spf13/cobra.(*Command).execute
0 0.00% 0.00% 3.48s 70.02% main.(*generator).GenConfig
0 0.00% 0.00% 3.48s 70.02% main.(*generator).GenConfig.func1
0 0.00% 0.00% 3.48s 70.02% main.(*generator).GenConfig.func1.1
0 0.00% 0.00% 3.48s 70.02% main.glob..func1
0 0.00% 0.00% 3.48s 70.02% path/filepath.Walk
0 0.00% 0.00% 3.48s 70.02% path/filepath.walk
0 0.00% 0.00% 3.46s 69.62% main.(*generator).iterateXlsx
0 0.00% 0.00% 3.46s 69.62% main.(*generator).sheetsFromExcel360
0 0.00% 0.00% 3.33s 67.00% github.com/360EntSecGroup-Skylar/excelize.(*File).GetRows
0 0.00% 0.00% 2.70s 54.33% encoding/xml.(*Decoder).DecodeElement
0.18s 3.62% 3.62% 2.70s 54.33% encoding/xml.(*Decoder).unmarshal
```

后来试着换了一个库,这个库功能更少,但是使用时候发现读表效率更高,换库只是调整了读表的部分。
github.com/tealeg/xlsx

总运行时间:2.34s
top
```
Flat Flat% Sum% Cum Cum% Name Inlined?
0 0.00% 0.00% 1.30s 55.56% github.com/tealeg/xlsx.readSheetFromFile
0 0.00% 0.00% 1.30s 55.56% github.com/tealeg/xlsx.readSheetsFromZipFile.func1
0 0.00% 0.00% 1.27s 54.27% encoding/xml.(*Decoder).Decode
0 0.00% 0.00% 1.27s 54.27% encoding/xml.(*Decoder).DecodeElement
0.04s 1.71% 1.71% 1.27s 54.27% encoding/xml.(*Decoder).unmarshal
0.03s 1.28% 2.99% 1.14s 48.72% encoding/xml.(*Decoder).unmarshalPath
0 0.00% 2.99% 1.13s 48.29% github.com/tealeg/xlsx.getWorksheetFromSheet
0.01s 0.43% 3.42% 0.76s 32.48% encoding/xml.(*Decoder).Token
0.04s 1.71% 5.13% 0.69s 29.49% encoding/xml.(*Decoder).rawToken
0 0.00% 5.13% 0.42s 17.95% runtime.mstart
0 0.00% 5.13% 0.42s 17.95% runtime.systemstack
```

两者对比,读取文件的操作差别还是挺大的,如果文件更大的话,差距就会更明显。
luxurioust
2019-01-16 00:04:19 +08:00
luxurioust
2019-01-16 00:13:56 +08:00
@ybilly Excelize 设计之初是以兼容性优先考虑来设计的,为了兼容带有相对复杂样式的 xlsx 文档做了很多内部检查,这会在一定程度上影响性能表现。对于操作工作簿内容为纯文本的场景,目前 tealeg/xlsx 表现更好。Excelize 后续会在性能方面不断做优化,同时也欢迎大家参与类库的开发、提交 patch ~
ybilly
2019-01-16 11:19:22 +08:00
@luxurioust 360 是个好库,曾经 golang 上只有 tealeg 的库,但是他的库对于读取文本以外的功能支持不多。现在多了 360,是个好事。最终可以根据项目需求来选择。
zarte
2019-03-08 15:43:02 +08:00
怎么修改图表样式呀?
luxurioust
2019-03-14 19:26:53 +08:00
@zarte 暂时还不支持对图表样式的修改
zarte
2019-03-15 09:32:15 +08:00
@luxurioust 啊!有没有图表样式定义格式相关文档的连接呀?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/523770

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX