目录

上一个主题

1. 用 Python 处理电子表格

下一个主题

1.2. 使用 OpenpyXL 读取 XLSX 电子表格


1.1. 电子表格的介绍

电子表格可以输入输出、显示数据,也利用公式计算一些简单的加减法。 可以帮助用户制作各种复杂的表格文档,进行繁琐的数据计算, 并能对输入的数据进行各种复杂统计运算后显示为可视性极佳的表格, 同时它还能形象地将大量枯燥无味的数据变为多种漂亮的彩色商业图表显示出来,极大地增强了数据的可视性。 另外,电子表格还能将各种统计报告和统计图打印出来。 EXCEL是微软OFFICE软件中的电子表格组件,其做出的表格是电子表格中的一种, 除此以外还有国产的CCED、金山WPS中的电子表格等。

不同软件厂商的电子表格

  • VisiCalc是第一个电子表格程序,用于苹果II型电脑。

  • Lotus 1-2-3是用于IBM PC上DOS时代主要的电子表格程序。

  • Numbers和Excel分别是Mac OS X和Windows系统上主要的电子表格程序。

  • Calc是可在多种平台上运行的Open Office与- LibreOffice中的电子表格程序。它可以用于计算,统计,做出预言,设计表格等功能。

微软电子表格的发展

第一阶段

1982年,微软发布它的第一个电子表格MultiPlan。 从某种角度来说今天的微软Excel是从MultiPlan发展出来的,于1985年在Macsh上引进。 就像所有的Mac程序一样,Excel是一个图形界面的程序。 1987年11月,微软发布了第一个Excel的Windows版本(名为Excel2.0以与Macsh版本相一致)。 因为在那个时候Windows还未被广泛使用。

第二阶段

1997年初,微软发布了Office97,其中包括Excel97。Excel97也就是Excel8。 这个包括了很多的增强功能,并提供了VBA程序开发的一个全新的界面。 Excel2000在1999年尾发布,作为Office2000的一部分发售。 Excel2000中的增强功能主要体现在互联网上,在编程方面也有一部分很重要的改变。 发布于2003年秋天的Excel2003是中国用户数量最大的版本,至今历久弥香, 由于长时间的使用习惯,目前仍是中国用户首选的Excel版本,具备广泛的用户基础。 但在国外客户看来,Excel2003可能是最失望的一次更新。这个版本没有什么新的功能。 微软加入了导入导出XML文件并在一个工作表中映射数据到指定单元格的功能,但实际上很少有用户需要这种功能。 另外,微软引进了“权限管理”的功能,让你在工作簿在不同部分设置限制(例如,只允许指定用户查看特定的工作表), 虽然很多用户还没有发现这个功能的玄机和用途,但毕竟是Excel版本升级后走出的重要一步。

第三阶段

升级到Excel 2007的操作界面,用户界面完全重新设计。菜单和工具栏被新的RibbonUI代替。 Excel2007的单元格数量是之前版本的1000倍,使用了一个新的开放XML文件格式。 其它的改善包括改进的表格,增强的条件格式,图表样式的增强以及文档主题。

XLSX文件格式

xlsx 是Microsoft Office EXCEL 2007之后版本文档的扩展名。 其基于Office Open XML标准的压缩文件格式取代了其以前专有的默认文件格式, 在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。 任何能够打开“.xlsx”文件的文字处理软件都可以将该文档转换为“.xls”文件,“.xlsx”文件比“.xls”文件所占用空间更小。

“.xlsx”格式的文件本质上是一个ZIP文件。将一个“.xlsx”文件的后缀改为ZIP后是可以用解压工具打开或是解压的。 事实上,Word2007的基本文件就是ZIP格式的,可以算作是“.xlsx”文件的容器。 “.xlsx”格式文件的主要内容是保存为XML格式的,但文件并非直接保存于磁盘。 它是保存在一个ZIP文件中,然后取扩展名为“.xlsx”。 将“.xlsx”格式的文件后缀改为ZIP后解压, 可以看到解压出来的文件夹中有word这样一个文件夹, 它包含了Word文档的大部分内容。 而其中的document.xml文件则包含了文档的主要文本内容。

Python 处理电子表格的模块

能实现Python对excel文件的读写功能的模块有以下三种:

  1. xlwt:对 xls 格式的 Excel 文件进行写入;

  2. xlrd:对 xls 格式的 Excel 文件进行读取;

  3. OpenpPyXL 实现了对 xlsmxlsx 开放电子表格格式的读写。

本书中只对 XLSX 这种开放文件格式进行处理,用到 OpenpyXL 模块。