Day7openpyxl操作Excel文件-

1、openpyxl读Excel文件

openpyxl 这个第三方库只能操作 .xlsx 的 Excel文件

import openpyxl          						# 起始固定写法
  • 打开Excel文件,获得一个工作簿对象
    • openpyxl.open(excel文件路径)
    • openpyxl.load_workbook()
wb = openpyxl.open('./file1/data.xlsx')
  • 获得工作簿中所有工作表的表名 # 工作簿对象 .sheetnames
names = wb.sheetnames                          #结果为列表
print(names)
  • 获取工作表

    • 工作簿对象 .active — 获取当前excel文件中的活跃表(即为被选中的那张)
    • 工作簿对象[对象] — 获取指定表名的工作表
    sheet1 = wb.active
    sheet2 = wb['原始数据']
    				                        #一般在进行这种操作时,先进行第二种,运行完以后,                                           用第二种,在后面的程序中进行运行             
    
  • 获取最大行数和列数()

sheet1.max_row        					     #  获取指定工作表中的最大行数
sheet1.max_column       				     # 获取指定工作表中的最大l列数
  • 获取单元格
cell = sheet1.cell(2,1)                      #工作表.cell(行号,列号)
  • 获取单元格中内容
print(cell.value)                           # 单元格对象.value
2、灵活获取excel文件中的数据
# 获取打开excel文件的第三方软件
import openpyxl  

#打开excel文件,获取一个工作簿
wb = openpyxl.load_workbook('文件夹名/excel文件名称')    # 最好是英文,且记得跟后缀

#获取工作表
sheet = wb['工作表名称']
sheet = wb.active

#获取指定行的数据
row  = 3 
for col in range(1,sheet.max_column + 1):
	cell = sheet.cell(row,col)                 #获取单元格
    pritn(cell.value)                          #获取单元格中的值

练习1:获取工作表中,所有学生的成绩

for row in range(2,max_row + 1):
    for col in range(1,max_column + 1)
    cell = sheet.cell(row,col)
    print(cell.value)

练习2:获取每个学生的所有成绩,保存到一个列表中,列表中含有字典

# [{‘姓名’: ‘李楠’, ‘英语’: 70, ‘办公软件操作’: 96, ‘电子商务’: 73, ‘计算机基础’:79}, ]

#创建一个空列表
list = []
#把excel文件中第一行中每一列的内容提取出去
for col in range(1,max_column + 1):
#放入到一个新建的字典中
    stu = {}
#依次获取除第一行以外,每一行,每一列的内容
    for row in range(2,max_row + 1):
#命名字典中键,
        key_cell = sheet.cell(1,col)
#得到字典中键对应的内容
        data_cell = sheet.cell(row,col)
#添加键为key_cell,值为data_cell的键值对,类型保持一致(.value),获取单元格中的内容,必须.value
        stu[key_cell.value] = data_cell.value
#将字典依次添加进列表中
    list.append(stu)
print(list)
3、excel写操作
import openpyxl

#创建工作簿(新建一个excel文件)
wb = openpyxl.Workbook()       # ()记得一定要写

#新建工作表
wb.create_sheet()                   # 使用默认的名字用于新建工作表
wb.create_sheet('student')          #使用指定的名字新建工作表
wb.create_sheet('teacher',0)        # 在指定位置前插入指定名字的工作表

#删除工作表                          ——工作簿.remove(工作表对象)
if 'sheet1' in wb.sheetnames:
    wb.remove(wb['sheet1'])        #如果名称为'sheet1'的工作表,已经在excel文件名中,删除表格'sheet1'

#修改单元格内容                      ——单元格对象.value = 数据                
# 增加内容
sheet4.cell(1,6).value = '平均分'    #是否只存在空白行列中?

# 修改内容
sheet4.cell(6,2).value = '(缺考)'

# 删除单元格内容
sheet4.cell(2,2).value = None

#对excel进行保存
wb.save('file1/data2.xlsx')         # 文件不能错,后缀不能出错
wb1.save('file1/data.xlsx')         #将表格保存在名为'data.xlsx'文件中

注意:‘wb’:表示以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,则覆盖写。Python文件使用“wb”方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。所以写入的字符类型需为二进制格式

4、excel写操作的灵活应用

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  
#传教判断文件是否存在的环境
impore os                               
#判断file1文件夹中'python数据分析.xlsx’是否存在
if os.path.exists('.file1/python数据分析.xlsx'):#如果结果为True,打开文件夹file1,获取名为'python数据分析.xlsx'的excel文件
	wb = openpyxl.load_workbook('file1/python数据分析.xlsx')
#否则新建excel文件(工作簿)
	else:
    wb = openpyxl.Workbook()
    
#判断‘wb’工作薄中,是否存在名为‘学生信息’的工作表
if '学生信息' in wb.sheetnames:
#结果为True,将’wb‘工作簿名下’学生信息‘工作表名为stu_sheet
	stu_sheet = wb['学生信息']
#否则,创建一个表名为'学生信息'到'wb’工作簿下   
else:
	stu_sheet = wb.create_sheet('学生信息')
    
#将数据写入到表中
#>>将表头写入到工作表中
#从第一列开始,几个元素对应几列
col = 1
#从data列表中,一个一个取出字典元素的键
for key in data[0]:
#依次打印出‘学生信息’工作表中,第一行,第col列的内容
    stu_sheet.cell(1,col).value = key
    col += 1
    
#>>从第二行开始写入所有的学生信息
#第二行开始
row = 2
#依次打印出列表data中的所有元素,并定义为stu(字典)
for stu in data:
    col = 1
#依次打印stu字典中,键所对应的值
    for key in stu:
#在stu_sheet这个工作表中,依次从第二行开始,每一列的单元格中,放入stu字典的键所对应的值
        stu_sheet.cell(row,col).value = stu[key]
        col += 1 
    row += 1 
#保存名为‘python数据分析’的工作簿
wb.save('file1/python数据分析.xlsx')
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值