ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

自动化——Python 操作Excel(二)

2022-02-24 20:05:07  阅读:244  来源: 互联网

标签:load xlsx wb Python Excel ws 自动化 import openpyxl


上一篇主要针对老版本的excel文件,这一篇主要时针对新版本的excel

使用Openpyxl 模块

案例一:批量创建新工作表

from openpyxl import Workbook
for m in range(1,13):
    wb=Workbook() #新建工作簿
    wb.save('%d 月.xlsx'%m) #保存工作簿

案例二:批量修改工作表名

import openpyxl 
wb=openpyxl.load_workbook('工作簿.xlsx') #打开工作簿
for sh in wb.worksheets:
    sh.title=sh.title+'-随便写点啥都可以'
wb.save('结果.xlsx')

案例三、批量新建工作表

import openpyxl 
wb = openpy.Workbook() #新建工作簿
for m in range(1,13):
    wb.create_sheet('%d 月'%m)
wb.remove(wb['Sheet']) #删除指定工作表
wb.save('结果.xlsx')

案例四:删除不符合条件的工作表

import openpyxl 
wb=openpyxl.load_workbook('工作簿.xlsx')
for sh in wb:
    if sh.title.split('-')[0]!='北京':
        wb.remove(sh)
wb.save('结果.xlsx')
        

案例五:批量复制工作表

import openpyxl 
wb = openpyxl.load_workbook('工作簿.xlsx')
for m in range(1,13):
    wb.copy_worksheet(wb['demo']).title='%d月'%m
wb.save('结果.xlsx')

案例六:汇总各表各单元格数据

import openpyxl 
wb = openpyxl.load_workbook('工作簿.xlsx')
sum([s['b14'].value for s in wb]))

案例七:按行求和

#方法一

import openpyxl 
wb=openpyxl.load_workbook('工作簿.xlsx')
ws=wb['工作表名称']#提起指定工作表
rng=ws['A2':'E71']#指定取数的范围
[sum([r.value for r in rn][1:]) for rn in rng]

#方法二

import openpyxl 
wb = open[yxl.load_workbook('工作簿.xlsx')
ws = wb.active
for x in list(ws.value)[1:]:
    [x[0],sum(x[1:])]

案例八:按列统计平均值

import openpyxl 
wb = openpyxl.load_worlbook('工作簿.xlsx')
ws = wb.active
for x in list(zip(*list(ws.values)))[1:]:
    [x[0],float('%.2f'%(sum(x[1:])/len(x)-1))]

案例九:动态获取单元格区域并汇总

import openpyxl 
wb = openpyxl.load_workbook('工作簿.xlsx')
ws = wb.active #获取当前活跃的工作表
minr=ws.ws.min_row #最小行
minc=ws.min_column #最小列
maxr=ws.max_row #最大行
maxc=ws.max_column #最大列
rngs=ws.iter_rows(min_row=minr+1,min_col=minc+2,max_row=maxr-1,max_col=maxc-1)#动态获取数据区域
subtotal =[min([v.value for v in row]) for row in rngs]

案例十:大于等于90并做标记

import openpyxl 
wb = openpyxl.load_workbook('工作簿.xlsx')
wb=ws.active
rngs = ws.iter_rows(min_row=2,min_col=2)
for row in rngs:
    for c in row:
        if c.value>=90:
            c.value ='%d(%s)%(c.value,'优秀')'
wb.save(结果.xlsx)
 

案例十一:筛选成绩总分大于等于300分的记录

import openpyxl 
wb=openpyxl.load_workbook('工作簿.xlsx')
ws=wb['成绩表']
nws=wb.create_sheet('结果')#创建工作表
rng=list(ws.rows)[1:]
nws.append([v.value for v in ws['1':'1']]+['总分'])
for l in rng:
    l1=[v.value for v in l]
    if sum(ll[1:])>=300:
        nws.append(l1+[sum(ll[1:])])
wb.save('结果.xlsx')

案例十二:多工作表合并到单工作表

import openpyxl 
wb=openpuxl.load_workbook('工作簿.xlsx')
nwb=openpyxl.Workbook()#新建工作簿
nws=nwb.active
nws.append(['年','月','金额']) #写入标题
for sh in wb:
    l1=[[[sh.title]+[v.value for v in l]]for l in sh.rows][1:-1]
    for l in l1:
        nws.append(l)
nwb.save('合并.xlsx')

标签:load,xlsx,wb,Python,Excel,ws,自动化,import,openpyxl
来源: https://blog.csdn.net/sinat_39027078/article/details/123118527

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有