Excelize权威指南
上QQ阅读APP看书,第一时间看更新

前言

欢迎阅读《Excelize权威指南》!本书会深入浅出地讨论Excelize开源基础库的设计与使用。自1978年电子表格被创造以来,电子表格应用已经有数十年的历史。时至今日,以Excel为代表的电子表格应用依然无法被其他形式的某个应用完全取代。电子表格作为一种结构化的数据,能够有效地组织信息;借助电子表格应用可以高效地对数据进行分析和处理,从而简化很多需要人工计算的工作;经过分析的数据可以通过图表的形式可视化呈现,从而帮助人工决策。随着信息产业的发展,电子表格文档在教育、医疗、金融等千行百业已被广泛应用。

身处“数字”时代,数据时刻伴我们左右。不论你是专业的软件工程师、数据分析师、互联网产品经理、项目经理,还是从事文秘、人力资源、市场销售等工作或者深度使用电子表格办公软件的人士,掌握数据处理与分析的能力,都将对工作带来极大的帮助。Excelize开源基础库提供了简单易用的函数,能够帮助你通过程序设计的方式高效地实现办公自动化,对电子表格中的数据进行统计、分析和批量处理。

如今,每年世界上的办公文档数量至少以数百亿的规模在增长,在实际应用中有大量场景需要通过程序设计的方式自动化地处理电子表格文档,比如企业应用中,很多信息化系统需要提供导入和导出电子表格文档的功能。从传统的纸质报表到电子表格,从电子表格到数据的云端处理,再到以数据为基础的SaaS,电子表格自动化处理在企业数字化建设和云计算市场中具有很高的商业价值。

Excelize是用Go语言编写的用来处理电子表格文档的开源基础库,遵循BSD 3-Clause开源许可协议。它提供了高性能处理电子表格文档的功能,已经被广泛应用于大型互联网公司、初创公司等不同规模的企业。通过程序设计的方式处理电子表格文档,开源领域已经有一些选择,比如在C、C++、C#、Java、JavaScript、PHP、Python、Ruby、Rust等程序设计语言中都有此类开源产品,但是,不知道你是否已经发现,这类产品在功能、性能和兼容性上存在很大的差异。有经验的开发者也许遇到过,使用一些开源电子表格文档基础库处理较为复杂的文档时,生成的文档被Excel等电子表格应用打开后可能会出现“样式错乱”“内容丢失”,甚至是“文档损坏”的情况,而且这是此类基础库普遍存在的问题,其原因在于电子表格文档拥有复杂、庞大的文档格式标准体系,即便是商业电子表格应用也难以保证同一文档在不同厂商、不同版本的应用中打开的效果完全一致,这正是此类开源产品数量不多且难以做到较好兼容性的原因。

Excelize基础库采用兼容性第一的设计原则,在设计上能够最大限度地保证文档兼容性,实现高保真编辑。得益于Go语言的跨平台优势,Excelize可以在不依赖Office应用程序的前提下,在Linux、Windows、macOS、嵌入式操作系统等操作系统中跨平台地进行电子表格文档的处理。Excelize支持XLSX、XLAM、XLSM、XLTM等多种文档格式,并兼容带有样式、图片、图表、数据透视表等高级功能组件的文档,还提供流式读写能力,用于处理包含大规模数据的工作簿。

为此,笔者结合电子表格文档的技术标准和Excelize基础库的研发心得撰写本书,希望能够带领你开启一段轻松而有收获的学习之旅,希望通过这段旅程能够让你由浅入深地了解并学习Excelize开源基础库的使用方法和背后的原理,在使用它进行电子表格文档数据处理和分析时更加从容、得心应手。

如何阅读本书

通常情况下我们建议读者按照顺序阅读本书。本书首先介绍Excelize的安装,接着简单地介绍电子表格文档的相关概念,然后在后续章节中逐步深入讲解文档格式、Excelize基础库的设计与实现原理,并对Excelize基础库提供的各项功能细节展开讨论。总的来说,除第 1 章外,后面每一章的内容建立在前一章所引入的概念上。对已经有开发经验的读者来说,本书也可作为开发工作中查阅参考的工具资料使用。

本书共18章,分为5篇,全面、系统、有针对性地介绍Go语言的Excelize开源基础库的原理、设计、实现和各项功能的使用方法。

第一篇(第1章、第2章)作为入门指南,主要讨论如何从零开始学习Excelize,这一部分将从Go语言开发环境的搭建讲起,逐步介绍Excelize版本的选择、基础库的安装,并将介绍如何快速使用Excelize编写两个简单的程序。

第二篇(第3章~第5章)会从基础库设计的角度对Excelize基础库进行介绍。第3章会从全局视角来讨论笔者在Excelize基础库的设计过程中的思考。第4章会介绍Excelize基础库背后的技术原理,对办公文档格式标准进行解读。第5章会介绍Excelize基础库设计的核心要素和基础库架构设计,以及它是如何实现电子表格文档格式标准的。如果你对Excelize开源基础库的原理很感兴趣,那么本书的第二篇非常适合你。如果你是一个希望了解清楚每个功能的细节的学习者,那么你可以先跳过第二篇,从本书的第三篇开始按照顺序阅读,在结合实践完整地了解 Excelize 基础库的各项功能之后,再回到第二篇进行阅读。

第三篇(第6章~第15章)将会深入讲解Excelize的核心技术与提供的各项功能。第6章会介绍文档数据结构模型的建立过程,这将会帮助你了解基础库的实现原理,学会排查开发过程中遇到的问题,并学会扩展 Excelize 基础库的功能。第7章会讨论工作簿处理的相关函数。第8章会介绍如何使用Excelize管理工作表。第9章将会深入讲解单元格相关的处理方法。第10章主要介绍行列处理的相关功能,其中包括批量获取单元格的方法等。第11章会详细讨论如何使用Excelize基础库在工作簿中创建和设置各种样式,以及条件格式的相关操作。第12章会讨论利用图表对数据进行可视化分析的方法,其中会介绍如何使用Excelize基础库创建不同类型的图表与各种图表格式选项的使用。第13章会讲解图片与形状相关的处理函数。第14章会讨论如何对工作表中的数据进行验证与筛选。第15章会介绍如何使用Excelize基础库对数据进行透视分析。

第四篇(第16章、第17章)主要讨论为读写包含大规模数据的工作簿而设计的流式读写方法。第16章会讨论流式读写的基本原理、设计思路与关键实现要点。第17章会详细介绍Excelize基础库提供的各个流式读写函数。

第五篇(第18章)将开发两个完整的案例,通过这两个案例复习并综合运用Excelize基础库的各项功能。

当然,怎样阅读本书都是可以的,本书中对所有存在上下文关联的知识点都做了明确的标注,你可以在感到困惑时再返回之前跳过的部分。

源代码与勘误

想要熟练掌握任何一种技术都离不开动手实践,学习 Excelize 基础库亦是如此。建议读者在阅读本书的过程中,对照书中的示例代码,自己动手编写和运行代码,进行实验。读者可以从 GitHub网站(用户名xuri)下载本书中所有的示例代码,笔者将以最大努力确保本书内容准确无误。但金无足赤,书中难免存在一些疏漏,如果读者发现代码、描述等内容存在任何错误或不准确之处,或者有对本书的建议或意见,请及时反馈给笔者。本书勘误请在GitHub网站(用户名xuri)上查看或提交。