day07-openpyxl操作excel文件
01 openpyxl读excel文件
注意:openpyxl这个第三方库只能操作后缀名为:.xlsx 的Excel文件。
与Excel相关的基本概念:
工作簿(WorkBook):一个Excel文件就是一个工作簿。
工作表(Sheet):数据是以单元格为单位保存到工作表中,一个工作簿中可以一个或者多个工作表(至少一个)。
单元格(Cell):工作表中的每一个格子。
1.打开Excel文件
获得一个工作簿对象。两种方式:
1)openpyxl.open(excel文件路径)
2)openpyxl.load.workbook(excel文件路径)
wb = openpyxl.open('./files/data.xlsx')
2. 获取工作簿中所有工作表的表名
语法:工作簿对象.sheetnames
names = wb.sheetnames
3.获取工作表
1)工作簿对象.active - 获取当前Excel文件中的活跃表(被选中的那张表)
2)工作簿对象[表名] - 获取指定表名对应的工作表
sheet1 = wb.active
sheet2 = wb['原始数据']
4. 获取最大行数和列数
工作表.max_row - 获取指定工作表中的最大行数。
工作表.max_colum - 获取指定工作表中的最大列数。
m_r = sheet2.max_row
m_c = sheet2.max_colum
5.获取单元格
工作表.cell(行号, 列号)
cell1 = sheet2.cell(2, 1)
cell2 = sheet2.cell(19, 3)
6. 获取单元格中的内容
单元格.value
02 excel写操作
1.创建工作簿(新建一个excel文件)
wb = openpyxl.Workbook()
wb1 = openpyxl.load_workbook('files/data.xlsx')
2.新建工作表
1)使用默认的名字新建工作表。
sheet = wb.create_sheet()
2) 使用指定的名字新建工作表
sheet = wb.create_sheet('student')
3)在指定位置前插入指定名字的工作表
sheet3 = wb.create_sheet('teacher', 0)
4)在已经存在的工作簿中新建表
if '电影' not in wb1.sheetnames:
sheet4 = wb1.create_sheet('电影')
3. 删除工作表
工作簿.remove(工作表对象)
if 'Sheet1' in wb1.sheetnames:
wb1.remove(wb1['Sheet1'])
4. 修改单元格内容
单元格对象.value = 数据
sheet5 = wb1['原始数据']
1)增加内容
sheet5.cell(1, 6).value = '平均分'
2)修改内容
sheet5.cell(6, 2).value = '(缺考)'
3)删除单元格内容
sheet5.cell(2, 2).value = None
对excel文件进行保存
wb.save('files/data2.xlsx')
wb1.save('files/data.xlsx')
03获取excel文件中的数据
获取excel表格中的数据创建一个列表,列表的各个元素是一个个字典。
import openpyxl
wb = openpyxl.load_workbook('files/data.xlsx')
sheet = wb['原始数据']
list = []
for row in range(2, sheet.max_row+1):
dict = {}
for col in range(1, sheet.max_column+1):
cell = sheet.cell(row, col)
key = sheet.cell(1, col)
dict[key.value] = cell.value
list.append(dict)
print(list)
04excel写操作的灵活应用
把下面列表的内容做成表格保存在名叫“python数据分析”的工作簿,“学生信息”的工作表中。
data = [
{'姓名': '李楠', '英语': 78, '办公软件操作': 96, '电子商务': 73, '计算机基础': 79},
{'姓名': '方鹏', '英语': 63, '办公软件操作': 94, '电子商务': 91, '计算机基础': 78},
{'姓名': '李磊', '英语': 89, '办公软件操作': 65, '电子商务': 0, '计算机基础': 0},
{'姓名': '王小若', '英语': 81, '办公软件操作': 77, '电子商务': 73, '计算机基础': 80},
{'姓名': '陈雨', '英语': 0, '办公软件操作': 87, '电子商务': 84, '计算机基础': 88},
{'姓名': '石璐', '英语': 91, '办公软件操作': 95, '电子商务': 84, '计算机基础': 80},
{'姓名': '张瑛', '英语': 73, '办公软件操作': 92, '电子商务': 92, '计算机基础': 89},
{'姓名': '程晓', '英语': 80, '办公软件操作': 86, '电子商务': 0, '计算机基础': 0},
{'姓名': '王丽', '英语': 72, '办公软件操作': 55, '电子商务': 88, '计算机基础': 70},
{'姓名': '赵军力', '英语': 69, '办公软件操作': 69, '电子商务': 63, '计算机基础': 76},
{'姓名': '王明', '英语': 96, '办公软件操作': 80, '电子商务': 85, '计算机基础': 64},
{'姓名': '李丽', '英语': 64, '办公软件操作': 0, '电子商务': 74, '计算机基础': 86},
{'姓名': '张帆', '英语': 72, '办公软件操作': 64, '电子商务': 97, '计算机基础': 74},
{'姓名': '张珊珊', '英语': 60, '办公软件操作': 95, '电子商务': 69, '计算机基础': 61},
{'姓名': '刘丽丽', '英语': 78, '办公软件操作': 93, '电子商务': 81, '计算机基础': 0},
{'姓名': '石节庆', '英语': 62, '办公软件操作': 63, '电子商务': 64, '计算机基础': 70},
{'姓名': '路瑶', '英语': 0, '办公软件操作': 0, '电子商务': 0, '计算机基础': 63},
{'姓名': '李贵明', '英语': 84, '办公软件操作': 90, '电子商务': 87, '计算机基础': 99}
]
import openpyxl
import os
# 1. 如果对应的excel文件已经存在就打开这个文件,不存在就创建
if os.path.exists('files/python数据分析.xlsx'):
wb = openpyxl.load_workbook('files/python数据分析.xlsx')
else:
wb = openpyxl.Workbook()
# 2.如果 学生信息 表已经存在就获取这个表,如果不存在就创建这个表
if '学生信息' in wb.sheetnames:
stu_sheet = wb['学生信息']
else:
stu_sheet = wb.create_sheet('学生信息')
# 3.将数据写入到表中
# 1)将表头(第一行内容写入到工作表中)
col = 1
for key in data[0]:
# print(key, col)
stu_sheet.cell(1, col).value = key
col += 1
# 2)从第二行开始写入所有的学生信息
row = 2
for stu in data:
col = 1
for key in stu:
stu_sheet.cell(row, col).value = stu[key]
col += 1
row += 1
# 保存数据
wb.save('files/python数据分析.xlsx')