身为工作党或者学生党的你,平日里肯定少不了与Excel打交道的机会。当你用Excel处理较多数据时,还在用最原始的人工操作吗?现在教你如何用Python处理Excel,从此处理表格再也不加班,时间缩短数十倍!
一个Excel电子表格文档称为一个工作簿
一个工作簿保存在一个扩展名为.xlsx的文件中
一个工作簿可以包含多个表
用户当前查看的表(或关闭Excel前最后查看的表)称为活动表
在特定行和列的方格称为单元格、格子
处理Excel表格需要用到openpyxl模块,该模块需要手动安装pip install openpyxl
用到的test.xlsx表格
在这里插入图片描述
1:用openpyxl模块打开Excel文档,查看所有sheet表
openpyxl.load_workbook()函数接受文件名,返回一个workbook数据类型的值。这个workbook对象代表这个Excel文件,这个有点类似File对象代表一个打开的文本文件。
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
print(workbook.sheetnames) # 打印Excel表中的所有表
# 结果:
# ['Sheet1', 'Sheet2']
2.1:通过sheet名称获取表格
在第10行,使用workbook['Sheet1']获取指定sheet表
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
print(workbook.sheetnames) # 打印Excel表中的所有表
sheet = workbook['Sheet1'] # 获取指定sheet表
print(sheet)
# 结果:
# ['Sheet1', 'Sheet2']
#
2.2:获取活动表
使用workbook.active获取活动表
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
print(sheet)
# 结果:
#
3.1:获取表格的尺寸
这里所说的尺寸大小,指的是excel表格中的数据有几行几列,针对的是不同的sheet而言。
使用sheet.dimensions获取表格的尺寸。
下面打印的A1:B7是什么意思呢?
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook['Sheet1'] # 获取指定sheet表
print(sheet.dimensions) # 获取表格的尺寸大小
# 结果:
# A1:B7
4.1:获取单元格中的数据
方法1:指定坐标的方式
sheet[“A1”]
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
# print(sheet.dimensions) # 获取表格的尺寸大小
cell1 = sheet['A1'] # 获取A1单元格的数据
cell2 = sheet['B7'] # 获取B7单元格的数据
# cell2 = sheet['B7'].value # 另一种写法
# 正确示范
# cell1.value获取单元格A1中的值
# cell2.value获取单元格B7中的值
print(cell1.value,cell2.value) # 姓名 18
# 错误示范
print(cell1,cell2) # | |
方法2: 指定行列的方式
sheet.cell(row=, column=)方式
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
# print(sheet.dimensions) # 获取表格的尺寸大小
cell1 = sheet.cell(row=1,column=1) # 获取第1行第1列的数据
cell2 = sheet.cell(row=3,column=2) # 获取第3行第4的数据
# 正确示范
# cell1.value获取单元格A1中的值
# cell2.value获取单元格B7中的值
print(cell1.value,cell2.value) # 姓名 41
4.2:获取单元格的行、列、坐标
.row 获取某个格子的行数;
.columns 获取某个格子的列数;
.coordinate 获取某个格子的坐标;
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
# print(sheet.dimensions) # 获取表格的尺寸大小
cell = sheet.cell(row=3, column=2) # 获取第3行第4的数据
print(cell.value, cell.row, cell.column, cell.coordinate)
'''
结果:
41 3 2 B3
'''
5:获取区间内的数据
获取单行单列数据的时候,使用一层for循环;获取多行多列、指定区间的数据时,使用两层for循环
获取指定区间的数据
1.使用sheet['A1:A5']拿到指定区间
2.使用两个for循环拿到数据
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
print('当前活动表是:')
print(sheet)
cell = sheet['A1:A5'] # 获取A1到A5的数据
print(cell)
# 打印A1到A5的数据
for i in cell:
for j in i:
print(j.value)
# 结果:
# 当前活动表是:
#
# ((,), (,), (,), (,), (,))
# 姓名
# 张三
# 李四
# 王五
# 赵六 | | | | |
获取指定行列的数据
·sheet[“A”] — 获取A列的数据
·sheet[“A:C”] — 获取A,B,C三列的数据
·sheet[5] — 获取第5行的数据
下面的代码,获取一列数据的时候,使用一层for循环
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
print('当前活动表是:' + str(sheet))
cell = sheet['2'] # 获取第2行的数据
# 打印A1到A5的数据
for i in cell:
print(i.value)
# 结果:
# 当前活动表是:
# 张三
# 74
下面代码,获取两列数据的时候,使用两层for循环。注意到,两列的结果打印到一起了,可读性较差
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
print('当前活动表是:' + str(sheet))
cell = sheet['A:B'] # 获取AB列的数据
# 打印AB列数据
for i in cell:
for j in i:
print(j.value)
# 结果:
# 当前活动表是:
# 姓名
# 张三
# 李四
# 王五
# 赵六
# alice
# bob
# 年龄
# 74
# 41
# 56
# 12
# 17
# 18
按行、列获取值
iter_rows():按行读取
iter_cols():按列读取
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
print('当前活动表是:' + str(sheet))
# 按行获取值
print('按行获取值')
for i in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=2):
for j in i:
print(j.value)
# 按列获取值
print('按列获取值')
for i in sheet.iter_cols(min_row=2, max_row=5, min_col=1, max_col=2):
for j in i:
print(j.value)
# 结果:
# 当前活动表是:
# 按行获取值
# 张三
# 74
# 李四
# 41
# 王五
# 56
# 赵六
# 12
# 按列获取值
# 张三
# 李四
# 王五
# 赵六
# 74
# 41
# 56
# 12
获取活动表的行列数
方法1:使用
sheet.max_row 获取行数
sheet.max_column 获取列数
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('2.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
print('当前活动表是:' + str(sheet))
rows = sheet.max_row # 获取行数
column = sheet.max_column # 获取列数
print(rows)
print(column)
'''
结果:
当前活动表是:
381
6
'''
方法2:自己写一个for循环
import os
import openpyxl
path = r"C:\Users\asuka\Desktop"
os.chdir(path) # 修改工作路径
workbook = openpyxl.load_workbook('test.xlsx') # 返回一个workbook数据类型的值
sheet = workbook.active # 获取活动表
print('当前活动表是:' + str(sheet))
row = []
column = []
# 获取当前活动表有多少行
for i in sheet.rows:
row.append(list(i)) # i是元组类型,转为列表
# 获取当前活动表有多少列
for i in sheet.columns:
column.append(list(i)) # i是元组类型,转为列表
print('行数:'+str(len(row)))
print('列数:'+str(len(column)))
'''
结果:
当前活动表是:
行数:12
列数:3
'''
事先准备工作就是如此,真正重要的操作方法会在明天更新,不要错过哦~
留言与评论(共有 0 条评论) “” |