Python教程

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

本文主要是介绍自动化——Python 操作Excel(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

上一篇主要针对老版本的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')

这篇关于自动化——Python 操作Excel(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!