0424 python学习总结(6)

0424 python学习总结(6)

一.openpyxl读取Excel文件

注意:openpyxl这个第三方库只能操作后缀名为 .xlsx 的Excel文件

Excel相关的基本概念

工作簿(Workbook):一个excel文件就是一个工作簿

工作表(Sheet):数据是以单元格为单位保存到工作表中,一个工作簿中可以一个或者多个工作表(至少一个)

单元格(Cell):工作表中的每一个格子

import openpyxl

1.打开Excel文件,获得一个工作簿对象

1)openpyxl.open(excel文件路径)
2)openpyxl.load_workbook(excel文件路径)
wb = openpyxl.open('./file_1/data.xlsx')

2.获取工作表中所有工作表的表名

工作簿对象.sheetnames

names = wb.sheetnames
print(names)

3.获取工作表

1)工作簿对象.active - 获取当前Excel文件中的活跃表(被选中的那张表)
2)工作簿对象[表名] - 获取指定表名对应的工作表
sheet1 = wb.active
print(sheet1)
sheet2 = wb.['原始数据']
print(sheet2)

4.获取最大行数和列数

工作表.max_row - 获取指定工作表中的最大行数

工作表.max_column - 获取指定工作表中的最大列数

m_r = sheet2.max_row
m_c = sheet2.max_column
print(m_r,m_c)

5.获取单元格

工作表.cell(行号,列号)

cell1 = sheet2.cell(2,1)
cell2 = sheet2.cell(19.3)
print(cell1,cell2)

6.获取单元格中的内容

单元格.value

print(cell1.value,cell2.value)

案例:

import openpyxl
wb openpyxl.load_workbook('./file_1/data.xlsx')
sheet = wb['原始数据']
#sheet = wb.active

m_r = sheet.max_row
m_c = sheet.max_column

练习1.获取指定行的所有数据

row = 3
for col in rang(1,sheet.max_column+1):
    cell = sheet.cell(row,col)
    print(cell.value)

练习2.获取第二列所有数据

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

练习3.获取每个学生的所有数据

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

4.获取每个学生的所有成绩,保存到一个列表中,列表中的元素是字典

#方法一:
list = []		#建立空列表储存字典
for i in range(1,m_r+1):    #从第一行开始遍历
    dic = {}
    for j in range(1,m_c+1):
        dic['%s' % sheet.cell(1,j).value] = '%s' % sheet.cell(i+1,j).value
        list.append(dic)
print(list)

方法二:
list1 = []
for i in range(1,m_c+1):
    list1.append(sheet.cell(1,i).value)
print(list1)
list2 = []
for i in range(2,m_r+1):
    dic1 = {}
    for j in range(1,m_c+1):
        dic1[list1[j-1]] = '%s' % sheet.cell(i,j).value
    list2.append(dic1)
print(list2)

all_stu = []
for row in range(2,sheet.max_row+1):
    stu = {}
    for col in range(1,sheet.max_column+1):
        data_cell = sheet.cell(row,col)
        key_cell = sheet.cell(1,col)
        # stu[key_cell.volue] = data_cell.value
        stu.setdefault(key_cell.valye,data_cell.value)
    all_stu.append(stu)
print(all_stu)
all_stu = []


二.Excel写操作

1.创建工作簿(相当于新建一个Excel文件)

import openpyxl
wb openpyxl.Workbook()
wb1 = openpyxl.load_workbook('file_1/date.xlsx')

2.新建工作表

1)使用默认的名字新建工作表
sheet1 = wb.create_sheet()
2)使用指定的名字新建工作表
sheet2 = wb.create_sheet('stu')
3)使用指定位置新建指定名字的工作表
sheet3 = wb.create_('tea',0)
4)也可以在已经存在的工作簿中新建工作表
if ' 电影信息' not in wb1.sheetnames:
    sheet4 = wb1.create_sheet('电影信息')

3.删除工作表

#工作簿.remove(工作表对象)
if 'sheet1' in wb1.sheetnames:
    wb.remove(wb1['sheet1'])

4.修改单元格内容

#单元格.value = 数据
sheet5 wb1['原始数据']
#1)增加内容
sheet5.cell(1,6).value = '平均分'		#在空白处增加内容
#2)修改内容
sheet5.cell(2,2).value = '(缺考)'
#对Excel文件进行保存
wb.save('file_1/data2.xlsx')
wb1.save('file_1/data.xlsx')

三.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}]

# 创建excel文件叫 : python数据分析.xlsx
# 在新excel文件中新建一张表:学生信息
# 将上面的数据以下面的形式写到到 学生信息 表中

import openpyxl         #建议建立工作簿和工作表前先判断是否存在(用到os模块)
import os
#1.如果对应的excel文件已经存在就打开这个文件,不存在就创建
if os.path.exists('file_1/python数据分析.xlsx'):
    wb = openpyxl.load_workbook('file_1/python数据分析.xlsx')
else:
    wb = openpyxl.Workbook()

#2.如果对应的工作表已经存在就获取这个表,如果不存在就创建这个表
if '学生信息' in wb.sheetnames:
    sheet1 = wb['学生信息']
else:
    sheet1 = wb.create_sheet('学生信息')

#3.将数据写入表中
#1)将表头(第一行内容写入到工作表中)
col = 1
for key in data[0]:
    # print(key,col)
    sheet1.cell(1,col).value = key
    col += 1

#2)从第二行开始写入所有的学生信息
row = 2
for stu in data:
    # print(stu,row)
    col = 1
    for key in stu:
        sheet1.cell(row,col).value = stu[key]
        col += 1
    row += 1

wb.save('file_1/python数据分析.xlsx')       #保存数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值