openpyxl操作Excel文件

openpyxl操作Excel文件

1.安装openpyxl第三方库
pip install openpyxl -i Python国内镜像源地址(百度内搜到,如果不能用协议名改为https)

或者永久更改pip包管理工具安装地址
pip/pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
然后 pip install 软件包名 
2.openpyxl读取Excel文件
import openpyxl
# 这个第三方库只能操作后缀 .xlsx的Excel文件

# 1.打开Excel文件,获得一个工作簿对象
# 1) openpyxl.open(excel文件路径)
# 2) openpyxl.load_workbook(excel文件路径)
wb = openpyxl.open('./files/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)

# 6. 获取单元格中内容
# 单元格.value
print(cell1.value, cell2.value)
3.灵活获取Excel文件中数据

请添加图片描述

import openpyxl

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

# 1. 获取指定行所有的数据
row = 4
for col in range(1, sheet.max_column+1):
    cell = sheet.cell(row, col)
    print(cell.value)

print('------------------------------华丽的分割线-----------------------------')

# 2. 获取指定列所有的数据
col = 2
for row in range(1, sheet.max_row+1):
    cell = sheet.cell(row, col)
    print(cell.value)

print('------------------------------华丽的分割线-----------------------------')
# 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)
    print('------------------')

# 4. 获取每个学生的所有成绩,保存到一个列表中,列表中的元素是字典
# [{'姓名': '李楠', '英语': 70, '办公软件操作': 96, '电子商务': 73, '计算机基础':79}, ]
all_students = []
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.value] = data_cell.value
        stu.setdefault(key_cell.value, data_cell.value)
    all_students.append(stu)

print(all_students)
4.openpyxl写操作Excel文件
import openpyxl

# 1.创建工作簿(新建一个excel文件)
wb = openpyxl.Workbook()
wb1 = openpyxl.load_workbook('files/data.xlsx')

# 2.新建工作表
# 1)使用默认的名字新建工作表
sheet1 = wb.create_sheet()

# 2)使用指定的名字新建工作表
sheet2 = 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')
5.灵活写操作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}
]

data1 = [
    {'name': '李楠', 'gender': '女', 'score': 1000, 'email': '726550822@qq.com'},
    {'name': '赵军力', 'gender': '男', 'score': 567, 'email': 'y_t209@163.com'},
    {'name': '张帆', 'gender': '男', 'score': 478, 'email': 'zhuucc@163.com'},
    {'name': '王小若', 'gender': '女', 'score': 672, 'email': '873925431@qq.com'},
    {'name': '李贵明', 'gender': '男', 'score': 325, 'email': '1873215638@qq.com'}
]

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('学生信息')

# 创建 联系方式 对应的表
contact_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


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

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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值