02-openpyxl操纵表格
1. 打开Excel表格
1. 创建表格
from openpyxl import Workbook
# 实例化
wb = Workbook()
# 激活 worksheet
ws = wb.active
2. 打开已存在Excel表格
通过调用方法load_workbook(filename)
进行文件读取,该方法中还有一个read_only
参数用于设置文件打开方式,默认为可读可写,该方法最终将返回一个workbook
的数据对象
from openpyxl import load_workbook
wb = load_workbook('文件名称.xlsx')
2.获取工作表单
每一个Excel表格中都会有很多张sheet工作表,在对表格操作前需要先选定一张工作表。
"""注意:这里的wb,是一个使用load_workbook方法 获取到的一个对象"""
# 获取所有工作表名(返回一个列表)
sheets = wb.get_sheet_names()
# 获取某一特定的工作表
sheet = wb.get_sheet_by_name('Sheet2')
sheet = wb["表单名称"]
# 获取工作表的表名
sheet_name = sheet.title
# 一般来说,表格大多数用到的是打开时显示的工作表,这时可以用active来获取当前工作表
sheet = wb.active
3. 获取单元格数据
3.1 获取单元格对象
"""这里的sheet,即获取到的一个表单对象"""
# 通过sheet[列行名]获取
a = sheet['A2']
# 通过sheet.cell(row,column)获取,row是 行,column是列
b = sheet.cell(1, 2) # 即sheet['B1']
这两种方法都是 获取到一个单元格对象:<Cell '注册登录'.B2>
,类似这样的一个对象。
尤其注意:sheet.cell(row,column)
来获取单元格对象,行列的下标都是从1开始的。
此时还不能获取到单元格内的具体数据。
3.2 获取单元格内的数据
要想获取到单元格内的具体数据,需要使用 单元格对象.value
来获取。
b = sheet.cell(1, 2)
print(b.value)
3.3 修改单元格的值
# 针对具体的单元格 ,对其重新赋值,即是修改单元格的值。
sh.cell(row,colum).value = 新的值
4. 按行获取数据
4.1 获取表单中的总行数和总列数
"""sh是获取到的表单对象"""
# 总行数
sh.max_row
# 总列数
sh.max_column
4.2 获取整行的数据
"""sh是一个 表单对象"""
sh.rows
sh.rows
获取到的是一个生成器对象:<generator object Worksheet._cells_by_row at 0x00000000035212E0>
,这个生成器对象中是每一行的数据,每一行数据又都是在一个元组中。
4.3 获取整列的数据
"""sh是一个 表单对象"""
sh.columns
同样的,获取到的是一个生成器对象,里面是每一列的数据 ,每一列的数据又都是在一个元组中。
4.4 从生成器中去出每一行,或是每一列的数据
for index in range(len(list(sh.rows))):
# print(index, list(sh.rows)[index])
print("*" * 20)
for item in list(sh.rows)[index]:
print(item.value)
对一个生成器对象,可以使用list()
函数,将其转化成一个列表,然后就可以对这个列表通过下标进行取值。
由于获取到的每一个列表成员都是一个元组,所以需要再次对这个元组进行遍历,最后通过.value
获取到具体的数据。