目录



>>> from helper import info; info()
页面更新时间: 2020-03-21 22:41:10
操作系统/OS: Linux-4.19.0-8-amd64-x86_64-with-debian-10.3 ;Python: 3.7.3

处理 XLSX 电子表格

Excel是Windows环境下流行的、强大的电子表格应用。 openpyxl 模块让Python程序能读取和修改Excel 电子表格文件。例如,可能有一个无聊的任务, 需要从一个电子表格拷贝一些数据,粘贴到另一个电子 表格中。或者可能需要从几千行中挑选几行,根据某种 条件稍作修改。或者需要查看几百份部门预算电子表格, 寻找其中的赤字。正是这种无聊无脑的电子表格任务, 可以通过Python来完成。

LibreOffice Calc 和 OpenOffice Calc 都能 处理Excel的电子表格文件格式,这意味着 openpyxl 模块也能处理来自这些应用程序的电子表格。 你可以从https://www.libreoffice.org/ 和http://www.openoffice.org/ 下载这些软件。 即使你的计算机上已经安装了Excel,可能也会发现这些 程序更容易使用。但是,本章中的截屏图都来自于 Windows 7 上的Excel 2010。

Excel 文档

首先,让我们来看一些基本定义。一个Excel电子 表格文档称为一个工作簿。一个工作簿保存在 扩展名为.xlsx的文件中。每个工作簿可以包含 多个表(也称为工作表)。用户当前查看的表 (或关闭 Excel 前最后查看的表),称为活动表。

每个表都有一些列(地址是从A开始的字母) 和一些行(地址是从1开始的数字)。在特定行和 列的方格称为单元格。每个单元格都包含一个 数字或文本值。单元格形成的网格和数据构成了表。

安装openpyxl模块

Python没有自带 openpyxl ,所以必须安装。 按照附录A中安装第三方模块的指令,模块的名称 是 openpyxl 。要测试它是否安装正确, 就在交互式环境中输入以下代码:

>>> import openpyxl

如果该模块正确安装,这应该不会产生错误消息。 记得在运行本章的交互式环境例子之前,要导入 openpyxl 模块,否则会得到错误, NameError:name 'openpyxl'is not defined

本书介绍了 openpyxl 的2.1.4版,但 OpenPyXL 团队会经常发布新版本。不过不用担心, 新版本应该在相当长的时间内向后兼容,支持本书中 使用的指令。如果你有新版本,想看看它提供了什么 新功能,可以查看 OpenPyXL 的完整文档: http://openpyxl.readthedocs.org/

习题

对于以下的问题,设想你有一个 Workbook 对象保存在变量 wb 中,一个 Worksheet 对象保存在 sheet 中, 一个 Cell 对象保存在 cell 中,一个 Comment 对象 保存在 comm 中,一个 Image 对象保存在 img 中。

  1. openpyxl.load_workbook()函数返回什么?

  • get_sheet_names()工作簿方法返回什么?

  • 如何取得名为 'Sheetl' 的工作表的 Worksheet 对象?

  • 如何取得工作簿的活动工作表的 Worksheet 对象?

  • 如何取得单元格 C5 中的值?

  • 如何将单元格C5中的值设置为"Hello"

  • 如何取得表示单元格的行和列的整数?

  • 工作表方法 get_highest_column()get_highest_row() 返回什么?这些返回值的类型是什么?

  • 如果要取得列 'M' 的整数下标,需要调用什么函数?

  • 如果要取得列14的字符串名称,需要调用什么函数?

  • 如何取得从 A1F1 的所有Cell 对象的元组?

  • 如何将工作簿保存到文件名 example.xlsx ?

  • 如何在一个单元格中设置公式?

  • 如果需要取得单元格中公式的结果,而不是公式本身,必须先做什么?

  • 如何将第5行的高度设置为100?

  • 如何设置列 C 的宽度?

  • 列出一些 openpyxl 2.1.4 不会从电子表格文件中加载的功能。

  • 什么是冻结窗格?

  • 创建一个条形图,需要调用哪5个函数和方法?