携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第28天,点击查看活动详情
前言
MS Office 最常见的办公软件套装,其格式实际上已经成为多种文件类型的标准。其中 MS Excel 是最常见的电子表格应用程序,而 Excel 格式是最常见的电子表格格式,这种格式也被绝大多数其他电子表格应用程序所接受。
Python 读取Excel文件
在本节中,我们将学习如何使用 Python 中的 openpyxl 模块从 Excel 电子表格中读取数据信息。
安装 openpyxl
为了使用 openpyxl 模块,我们首先需要安装该模块,其安装方法与其它第三方库的安装完全相同:
$ pip install openpyxl
读取 Excel 文件
首先,导入 openpyxl 模块:
>>> import openpyxl
读取 Excel 文件 movies_rating.xlsx,将其加载到内存中:
>>> xlsfile = openpyxl.load_workbook('movies_rating.xlsx')
导入模块后,实例化一个 Workbook 对象将电子表格文件加载到的内存中。每个工作簿 (workbook)可以包含一个或多个工作表 (sheet),每个工作表都可以包含多个单元格 (cell)。
遍历所有工作表并获取第一个工作表(在本节使用的 Excel 文件中第一个工作表是唯一包含数据的工作表):
>>> xlsfile.sheetnames
['movies_rating']
>>> sheet = xlsfile['movies_rating']
为了确定电子表格文件中可用的工作表,我们可以使用 sheetnames 属性获取所有工作表名称(本节中使用的电子表格中仅包含一个工作表),然后我们可以像字典一样访问工作表以检索 Worksheet 对象。
获取单元格 B4 和 C4 的值,分别是 'Batman' 和 '7.7':
>>> sheet['B4'].value
'Batman'
>>> sheet['C4'].value
7.7
工作表可以直接通过名称访问单元格,例如 A4 或 C4,访问单元格时会返回一个 Cell 对象,使用 value 属性可以访问存储在单元格中的数据。
获取电子表格中行和列总数,超出电子表格范围的任何单元格都将返回值 None:
>>> sheet.max_row
5
>>> sheet.max_column
4
>>> sheet['D4'].value
>>> sheet['A6'].value
>>> sheet['D1'].value
使用 max_columns 和 max_rows 可以获得在工作表中存储数据的区域,使我们能够在数据的范围内进行搜索。Excel 将列定义为字母( A、B、C 等),将行定义为数字( 1、2、3 等)。需要注意的是,在访问单元格时需要首先设置列,然后设置行,例如只能使用 D1,而不能使用 1D,否则会引发异常。数据区域外的单元格可以访问,但不会返回数据,它们可用于写入新数据。
>>> sheet['1D'].value
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "Documents/new_venv/lib/python3.7/site-packages/openpyxl/worksheet/worksheet.py", line 290, in __getitem__
min_col, min_row, max_col, max_row = range_boundaries(key)
File "Documents/new_venv/lib/python3.7/site-packages/openpyxl/utils/cell.py", line 135, in range_boundaries
raise ValueError(msg)
ValueError: 1D is not a valid coordinate or range