Python自动化办公(用openpyxl操作excel表格)

一、openpyxl介绍

excel文件后缀名分为xls、xlsx
xls:office2003及以前.
xlsx:office2007及以后
新版office向前兼容.

xlsx文件比xls文件体积缩小(保存同样的数据)
xlsx文件储存的数据量远大于xls文件
xls文件最多储存256列、2^16(65536)行数据
xlsx文件最多1048576行,16384列

1、excel写操作
from openpyxl import Workbook, load_workbook

Workbook:当文件(工作簿)不存在时,使用Workbook方法创建.
使用Workbook创建的文件我们看不到,但是系统知道他的存在,如果想让文件出现,必须保存
load_workbook:当文件(工作簿)已经存在,使用load_workbook加载
wb = Workbook()

创建工作表(worksheet):create_sheet(表名,下标)
下标:代表新建工作表的位置

wb.create_sheet('一年级一班')
wb.create_sheet('一年级一班', 0)

有同名的会在后面+1+2+3…

查看已经存在的表名:sheetnames
sheetlist=wb.sheetnames
print(sheetlist)

指定工作簿中的工作表:
active:指定关闭文件时显示在上层的工作表
指定打开存在的某张表

sheet1=wb.active
print(sheet1)
sheet2=wb['一年级一班']
print(sheet2)

向指定的单元格写入内容,同时也是查看某个单元格内容
工作表[列号行号]->列号表示大写英文字母
工作表.cell(行号,列号)->列表表示从1开始递增的数字
value表示查看单元格的值

print(sheet1.cell(1, 1).value)
sheet1.cell(1,1).value='姓名'
print(sheet1.cell(1, 1).value)

print(sheet2['A1'].value)
sheet2['A1'].value='姓名1'
print(sheet2['A1'].value)

删除已存在的工作表

wb.remove_sheet(wb['Sheet'])

修改工作表名

sheet1.title='一年级二班'


wb.save('学生成绩.xlsx')

二、例子:生成学生成绩表

from openpyxl import load_workbook
from random import randint
1.加载已经存在的文件
wb= load_workbook('学生成绩.xlsx')
print(wb)

查看已经存在的所有工作表

sheetlist=wb.sheetnames
print(sheetlist)

3.指定工作表

sheet=wb['一年级一班']
print(sheet)

4.学生成绩表生成规矩:
存在 姓名、语文、数学、英语 四列;
存在100名学生,姓名列填入 python001~python100;
语文、数学、英语三列从[0,100]随机生成一个整数填入。

column=['姓名','语文','数学','英语']
for i in range(len(column)):
    sheet.cell(1,i+1).value=column[i]

for i in range(1,101):
    stuName=f'python{i:0>3}'
    sheet.cell(i+1,1).value=stuName
    for j in range(2,5):
        sheet.cell(i+1,j).value=randint(0,100)

保存、关闭

wb.save('学生成绩.xlsx')

debug按钮用法:用于查看代码运行顺序
Step Over:进入下一步代码
Step into:进入到每一行代码的底层代码,查看底层代码执行顺序
Step into my code:进入到自己的每一行代码的底层代码,查看底层代码执行顺序
step out:将进入底层的代码直接一步执行完
run to cursor:运行断点

三、读取学生成绩表

from openpyxl import load_workbook

wb = load_workbook('学生成绩.xlsx')

选择“一年一班”工作表

sheet = wb['一年级一班']

查看工作表的最大列数
max_row
max_column

rows = sheet.max_row
cols = sheet.max_column
print(rows, cols)

for i in range(1, rows + 1):
    for j in range(1, cols + 1):
        print(sheet.cell(i, j).value)

四、例子:将数据汇总

from openpyxl import load_workbook

1.加载文件

wb = load_workbook('成都二手房.xlsx')

if '汇总' not in wb.sheetnames:

2.创建《汇总》工作表

    wb.create_sheet('汇总')

3.查看已存在的所有工作表

sheetList = wb.sheetnames
print(sheetList)

4.先将列名写入到汇总工作表中

for col in range(1, wb[sheetList[0]].max_column + 1):
    wb['汇总'].cell(1, col).value = wb[sheetList[0]].cell(1, col).value

5.读除汇总之外的所有表的数据
变量index_控制写入的行号

index_ = 2
for i in sheetList[:-1]:
    sheet = wb[i]
    # 找最大行列数
    rows = sheet.max_row
    columns = sheet.max_column
    # 遍历每一行
    for row in range(2, rows + 1):
        # 遍历每一行的每一列
        for col in range(1, columns + 1):
            # 将每一个单元格写入到汇总表中
            wb['汇总'].cell(index_, col).value = sheet.cell(row, col).value
        index_ += 1

保存、关闭

wb.save('成都二手房.xlsx')
print('操作完成')
  • 6
    点赞
  • 7
    收藏 更改收藏夹
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喆子玩点数据

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值