Go语言国际电子表格文档格式标准实践

本文是阿里巴巴高级开发工程师续日在 Gopher Meetup 北京站的演讲内容,探讨了使用Go语言实现ECMA-376, ISO/IEC 29500国际电子表格文档格式标准,即Excelize库的实践。Excelize是一个用于操作Excel文档的Go库,支持读写XLSX文件,广泛应用在报表系统中。演讲内容包括标准解读、Go语言实现细节和案例分享,展示了如何处理复杂的Excel格式和依赖关系,以及在Go中创建、编辑Excel文档的示例。" 113168599,10293507,SpringBoot整合Mybatis:MySQL8自动生成代码工具,"['SpringBoot开发', 'Mybatis集成', '数据库集成', '代码自动化', 'MySQL']
摘要由CSDN通过智能技术生成

在 Gopher Meetup 北京站上,阿里巴巴高级开发工程师、前百度 Go 语言编程委员会成员续日进行了主题为《Go语言国际电子表格文档格式标准实践》的演讲。

Excelize 是 Go 语言编写的用于操作 Office Excel 文档类库,基于 ECMA-376, ISO/IEC 29500 国际电子表格文档格式标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的 XLSX 文档,可以应用于各类报表系统中,做为 2018 开源中国最有价值开源项目,目前已成为 Go 语言最受欢迎的 Excel 文档基础库。本次演讲将探究国际文档格式标准,解读使用 Go 语言从 0 到 1 打造 Excelize 背后的故事,分享 Go 语言在国际电子表格文档格式标准方面的实践。

以下为演讲内容整理。

00

前言

大家好!我叫续日。今天给大家带来 Go 语言在国际电子表格文档格式标准实践方面的分享。提起电子表格大家都比较熟悉,以 Excel 为代表的经典电子表格已经应用在各行各业当中,根据相关研究机构的估算数据,世界上 Office 办公文档的数量在 2007 年的时候已经达到了 400 亿规模,并且每年大约以数十亿的规模增长。

为什么要用 Excelize

Excel 文档作为一种数据承载的重要载体,在很多领域都有应用。作为开发者,一些情况下需要用编程的方式操作这些 Excel 文档,比如从已有电⼦表格⽂档中读取内容、创建新的电⼦表格⽂档、基于已有⽂档(模版)⽣成新的电⼦表格⽂档、向电⼦表格⽂档中插⼊图⽚、图表和表格等元素,有时还需要跨平台实现这些操作。Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,使用 Excelize 可以方便的实现上述需求。今天的分享包含两个部分,第一部分介绍国际电子表格文档格式标准的内容,第二部分向大家分享在使用 Go 语言实现标准过程当中的一些经验。

01

文档格式国际标准

如果要用编程的方式操作电子表格文档,首先需要了解其标准。ECMA-376, ISO/IEC 29500 做为国际文档格式标准是一种基于 XML 和 ZIP 技术的文档格式,对应大家所熟悉的 Office 文档文件。这个标准的名字比较长,里面涉及到三个国际的标准化组织。ECMA 是欧洲计算机厂商联盟,ISO 大家比较熟悉,国际标准化组织,IEC 是国际电工协会,这三个国际化组织联合制定了文档格式国际标准。

标准特点分为六个方面,下面解释一下比较有代表性的几个特点。互操作性, 文档格式标准独立于专有格式、功能和运行时环境,平台语言无关,使开发人员可以进行广泛选择。国际化体现在文档标准当中涉及到像语言的书写规范,有些文字是纵向的,或者是从右到左的书写系统,以及各个国家地区的历法、时间的处理。高保真迁移,文档的内容本身不需要开发者把所有的数据结构都实现出来,也能在呈现上表现一致。因为它的数据结构是非常庞大的,也提供了向后扩展的空间,业务扩展空间体现在向后兼容的设计,在文档当中可以嵌入多媒体的文件,比如 VBA 脚本、图片、音视频等。

TC45 是 ECMA 下属的技术委员会,主要负责对该标准的修订和维护。这个标准目前已经发展到第五版,一共有五部分。委员会的代表中有很多大家熟悉的公司,其中包括计算机厂商、互联网公司和传统行业代表,例如光学镜片公司、石油公司和图书馆等,可以发现图书馆在信息化的存储方面也有很多的需求。

              

右边两张图片是标准文档的下载页面截图,第一张图片是该标准第一部分在 ISO 上的页面,可以看到第一部分的内容有超过 5000 页的文档,数量还是比较多的。第二张图片是 ECMA 网站上该标准的截图,上面有对标准中 5 个部分的描述,我们可以访问网站下载标准文档进行查看。大家比较熟悉的像 Microsoft Office Excel、Apple Numbers、LibreOffice、Google Docs、Apache OpenOffice 等,都是遵循该标准的典型代表。

标准规范

               

下面介绍一下标准的内容,首先上层是标记语言部分,这部分由四类标记语言组成。 

Word 文档对应的标记语言叫 WordprocessingML,电子表格则是 SpreadsheetML,PowerPoint 演示文稿对应的是 PresentationML。Excelize 主要实现的是 SpreadsheetML 这个部分,除此之外 Office 文档支持进行跨应用的嵌套,例如:Word 可以嵌套 Excel,Excel 可以嵌套 Word。通用标记是跨应用的文本标记语言,涉及到可视化图表、可扩展标记、源数据和目录引用等。

中间这一层叫做开放包装公约(Open Packaging Convention),简称 OPC,是组织这些文档格式的上层描述语言,其中定义了文档内部组件之间的关联关系、文档内部数据结构之间的依赖和文件数字签名等。

下面是底层的核心技术,我们可以创建一个 Excel 文件,修改成 zip 扩展名解压一下就知道它是个压缩包,标准委员会采用比较基础的核心技术来定义文档格式,这样做有很强的扩展性,也方便各个平台去实现。

XSD (XML Schema Definition)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值