1.安装第三方库
为了能够使用 Python 对 Excel 文件进行操作,我们需要安装第三方库 openpyxl。
1.1 检查有没有安装第三方库
首先,检查有没有安装 openpyxl 库。在 Python 的终端或 IDE 里输入下面的命令:import openpyxl
如果没有报错,说明已经安装了 openpyxl。如果报如下错误:
则说明没有安装 openpyxl。这时候,我们可以使用如下命令来安装第三方库 openpyxl。pip install openpyxl
。
2.Excel 的基本概念
相信大家在生活工作中都使用过 Excel。接下来我们就来了解一下Excel 的几个基本概念:
2.1 工作簿
一个 Excel 电子表格文档称为一个工作簿,一个工作簿保存在扩展名为 .xlsx 的文件中。
2.2 工作表
每个工作簿可以包含多个表(也称为工作表),用户当前查看的表(或关闭 Excel 前最后查看的表),称为活动表。
2.3 单元格
每个表都有一些列(地址是从 A 开始的字母)和一些行(地址是从 1 开始的数字)。在特定行和列的方格称为单元格。每个单元格都包含一个数字或文本值。单元格形成的网格和数据构成了表。
3.使用 Python 操作 Excel
在了解了 Excel 的基本概念后,我们来看如何使用 Python 进行 Excel 文件的操作。
3.1 工作簿的创建
# 工作簿的创建
from openpyxl import Workbook
wb = Workbook()
wb.save('test.xlsx')
在上面的代码中,我们首先导入 openpyxl 库,接着创建一个 Workbook 对象并取名保存即可。这样在当前目录下便生成了一个 Excel 文件。如下图所示:
3.2 工作表的创建
讲完工作簿的创建后,我们来看下工作表的创建。
# 工作表的创建
from openpyxl import Workbook
wb = Workbook()
wb.create_sheet('MySheet')
wb.save('test.xlsx')
在上面的代码中:
1.导入 `openpyxl` 库并创建一个 `Workbook` 对象 `wb`。
2.使用 `create_sheet` 方法创建工作表,在调用 `create_sheet` 方法时只需要传入工作表的名称即可。
由于在创建 Workbook 对象 wb 时已经默认创建了一个工作表 Sheet,所以在调用 create_sheet
创建 MySheet 工作表之后,工作簿中包含了两个工作表 Sheet 和 MySheet。如下图所示:
上面在调用 create_sheet
方法创建工作表时,只传入了工作表的名称。还有另外一种调用 create_sheet
的方式,就是不但传入工作表的名称,而且传入工作表在工作簿中的位置。接着上面的代码,添加如下代码:
wb.create_sheet('MySheet2', 0)
wb.save('test.xlsx')
上面的代码中,在调用 create_sheet 方法时,传入了工作表的名称和工作表在工作簿的位置。上述代码添加后的完整代码为:
from openpyxl import Workbook
wb = Workbook()
wb.create_sheet('MySheet')
wb.save('test.xlsx')
wb.create_sheet('MySheet2', 0)
wb.save('test.xlsx')
上述的代码执行之后,工作簿中的工作表的布局如下图所示:
由于指定 MySheet2 工作表的位置为 0,所以 MySheet2 工作表是工作簿的第一个工作表。我们使用上面的方法再来添加一个工作表,接着上面的代码,添加如下代码:
wb.create_sheet('MySheet3', 2)
wb.save('test.xlsx')
上述代码添加后的完整代码为:
from openpyxl import Workbook
wb = Workbook()
wb.create_sheet('MySheet')
wb.save('test.xlsx')
wb.create_sheet('MySheet2', 0)
wb.save('test.xlsx')
wb.create_sheet('MySheet3', 2)
wb.save('test.xlsx')
上述的代码执行之后,工作簿中的工作表的布局如下图所示:
由于指定 MySheet3 的位置为 2,所以 MySheet3 为工作簿中的第三个工作表。
3.3 查看工作表的名字
工作表创建完成后,我们可以查看工作簿中的工作表,接上面的代码,添加如下代码:wb.sheetnames
上述代码添加后的完整代码为:
from openpyxl import Workbook
wb = Workbook()
wb.create_sheet('MySheet')
wb.save('test.xlsx')
wb.create_sheet('MySheet2', 0)
wb.save('test.xlsx')
wb.create_sheet('MySheet3', 2)
wb.save('test.xlsx')
wb.sheetnames
3.4 改变工作表的名字
通过代码我们同样可以改变工作表的名字,接上面的代码,添加如下代码:
ws = wb['Sheet']
ws.title = 'MySheet0'
wb.save('test.xlsx')
wb.sheetnames
上述代码添加后的完整代码为:
from openpyxl import Workbook
wb = Workbook()
wb.create_sheet('MySheet')
wb.save('test.xlsx')
wb.create_sheet('MySheet2', 0)
wb.save('test.xlsx')
wb.create_sheet('MySheet3', 2)
wb.save('test.xlsx')
wb.sheetnames
ws = wb['Sheet']
ws.title = 'MySheet0'
wb.save('test.xlsx')
wb.sheetnames
在上面的代码中,首先获取工作表 Sheet,然后将其名字改为 MySheet0,最后进行工作簿的保存。执行完上述代码后,工作簿中工作表的情况如下图所示:
3.5 获取活跃表
用户当前查看的表(或关闭 Excel 前最后查看的表),称为活动表。通过代码我们可以获取活跃表。接上面的代码,添加如下代码:
ws = wb.active
ws.title
上述代码添加后的完整代码为:
from openpyxl import Workbook
wb = Workbook()
wb.create_sheet('MySheet')
wb.save('test.xlsx')
wb.create_sheet('MySheet2', 0)
wb.save('test.xlsx')
wb.create_sheet('MySheet3', 2)
wb.save('test.xlsx')
wb.sheetnames
ws = wb['Sheet']
ws.title = 'MySheet0'
wb.save('test.xlsx')
wb.sheetnames
ws = wb.active
ws.title
3.6 删除工作表
我们不但可以添加、修改工作表,还可以删除工作表。接上面的代码,添加如下代码:wb.sheetnames
上述代码添加后的完整代码为:
from openpyxl import Workbook
wb = Workbook()
wb.create_sheet('MySheet')
wb.save('test.xlsx')
wb.create_sheet('MySheet2', 0)
wb.save('test.xlsx')
wb.create_sheet('MySheet3', 2)
wb.save('test.xlsx')
wb.sheetnames
ws = wb['Sheet']
ws.title = 'MySheet0'
wb.save('test.xlsx')
wb.sheetnames
ws = wb.active
ws.title
wb.sheetnames
在删除之前,我们首先查看当前工作簿中的工作表。如下图所示:
继续添加如下代码:
del wb['MySheet2']
wb.save('test.xlsx')
上述代码添加后的完整代码为:
from openpyxl import Workbook
wb = Workbook()
wb.create_sheet('MySheet')
wb.save('test.xlsx')
wb.create_sheet('MySheet2', 0)
wb.save('test.xlsx')
wb.create_sheet('MySheet3', 2)
wb.save('test.xlsx')
wb.sheetnames
ws = wb['Sheet']
ws.title = 'MySheet0'
wb.save('test.xlsx')
wb.sheetnames
ws = wb.active
ws.title
wb.sheetnames
del wb['MySheet2']
wb.save('test.xlsx')
在上面的代码中,使用 del
关键字来删除工作表,删除工作表 MySheet2 并保存之后,工作簿中的工作表如下图所示:
可以看到工作表 MySheet2 已经被删除。