Go-Excelize API 源码阅读(一)——NewFile()
Go-Excelize API 源码阅读(一)——NewFile()
一、Go-Excelize 简介
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要求使用的 Go 语言为 1.15 或更高版本。
二、NewFile()
该 API 的功能是利用默认的模板创建新的 Excel 工作薄,新创建的工作簿中会默认包含一个名为 Sheet1 的工作表。
f.Pkg
是file
结构体的一个成员,定义要填充的电子表格文件结构。
func (m *Map) Store(key, value any)
是将值存入Map
之中。
接下来,SheetCount 是表格的数量。默认是一个 Sheet1,所以初始数量是 1.
CalcChain 是有 calcChainReader()计算的,该函数解析 defaultXMLPathCalcChain 配置中的文件生成一个 xlsxCalcChain 类型的数据,程序中读取的文件地址是 xl/calcChain.xml。xlsxCalcChain 直接映射 calcChain 元素。这个元素代表了计算链的根。
Comments 新建一个map[string]*xlsxComments
。
ContentTypes 由 contentTypesReader 创建,contentTypesReader 提供了一个函数来获取反序列化后的[Content_Types].xml 文件结构的指针。
f.Relationships
和f.Drawings = sync.Map{}
是创建一个并发状况下的 Map。
同样的,Styles
由 f.stylesReader()创建,提供了一个函数来获取反序列化后的xl/styles.xml
文件结构的指针。f.WorkBook 也差不多。
VMLDrawing 、DecodeVMLDrawing 都是创建 map。
接下来是 sheet1 的相关创建操作。
三、结语
这里是老岳,这是 Go 语言相关源码的解读第一篇,我会不断努力,给大家带来更多类似的文章,恳请大家不吝赐教。
版权声明: 本文为 InfoQ 作者【Regan Yue】的原创文章。
原文链接:【http://xie.infoq.cn/article/f11d8a3671e3746dbd0b555a2】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论