python-自动化篇-办公-Excel-Openpyxl库

文章目录

    • 1.1 Openpyxl库的安装使用
    • 1.2 Excel的新建、读取、保存
      • 1.2.1新建保存工作簿
      • 1.2.2读取保存工作簿
      • 1.2.3实例(批量建新工作表)
    • 1.3工作表对象的获取方法
      • 1.3.1工作表获取方式
      • 1.3.2实例(批量修改工作表名)
    • 1.4工作表的新建、复制、删除
      • 1.4.1新建工作表
      • 1.4.2复制工作表
      • 1.4.3删除工作表
    • 1.5关于工作表的实例应用
      • 1.5.1实例应用(批量新建工作表)
      • 1.5.2实例应用(删除不符合条件的工作表)
      • 1.5.3实例应用(批量复制工作表)
    • 1.6单元格信息获取
      • 1.6.1单元格数据获取
      • 1.6.2实例应用(汇总各表各单元格数据)
    • 1.7单元格区域信息获取
      • 1.7.1单元格区域数据获取
      • 1.7.2实例应用
    • 1.8行列信息获取
      • 1.8.1行列信息获取
      • 1.8.2实例应用
    • 1.9单元格的写入
      • 1.9.1单元格与区域数据写入

1.1 Openpyxl库的安装使用

openpyxl模块是一个读写Excel 2010文档的 Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能。新建、读取、保存工作簿。Openpyxl 的安装和其它库一样。直接在 PyCharm 中安装即可。
Openpyxl可以对Excel进入读、写操作,也可以进行单元格格式设置、图表、条件格式、数据透视表等设置。
由于本课程是为了巩固应用python基础知识,所以就只讲解对openpyxl对Excel的读写操作。

1.2 Excel的新建、读取、保存

1.2.1新建保存工作簿

新建: openpyxl.Workbook(),注意这个的 w是大写的(本人吃过亏),可以设置write_only=True/False的读写方式,默认是可写。
保存: workbook.save(‘工作簿名.xlsx’)

from openpyxl import Workbook2
wb=Workbook()#新建工作簿
wb.save('我的工作簿xlsx')#t保存工作簿

每个workbook创建后,默认会存在一个worksheet。也可以自行创建新的worksheet。

1.2.2读取保存工作簿

读取工作簿: openpyxl.load_workbook(‘工作簿名.xlsx’),注意以下相关参数的设置。read_only=False/True False表示可以读、写,True表示只能读、不能写。
guess_types=False/True False表示转换数据,True表示不能转换数据。
data_only=False/True False表示序单元格的真实信息,True表示只读取值。

from openpyxl import load_workbook
wb=load_workbook("成绩表-1.xlsx')#读取工作簿
wb.save('成绩表-2.xlsx')#保存工作簿

1.2.3实例(批量建新工作表)

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

1.3工作表对象的获取方法

1.3.1工作表获取方式

获取当前活动工作表的:workbook.active
以索引值方式获取工作表:workbook.worksheets[索引值]
以工作表名获取:workbook[‘工作表名’],注意,此表达方式没有没有成员提示。循环工作表:workbook.worksheets
获取所有工作表名:workbook.sheetnames
获取指定工作表名:worksheet.title,可以返回工作表名称,也可以修改工作表名称,如worksheet.title=‘工作表名’

1.3.2实例(批量修改工作表名)

import openpyxl
wb=openpyxl.load_workbook('各年业绩表.xlsx')
for sh in wb.worksheets:sh.title=sh.title+'-芝华公司'
wb.save('各年业绩表(修改后).xlsx')

1.4工作表的新建、复制、删除

1.4.1新建工作表

可以在新建的工作簿中新建工作表(在新建工作簿时,会默认新建一个工作表)。也可在己经存在的工作簿中新建工作表。
新建工作表时的默认工作表名: workbook.create_sheet(),默认工作表名为Sheet1、 Sheet2、Sheet3
新建工作表自定义工作表名: workbook.create_sheet(‘工作表名’,指定位置),如果不指定位置则默认将新建的工作表放置在最后。

1.4.2复制工作表

workbook.copy_worksheet(工作表)

1.4.3删除工作表

workbook.remove(工作表)

1.5关于工作表的实例应用

1.5.1实例应用(批量新建工作表)

import openpyxl
wb = openpyxl.Workbook()#新建工作簿
for m in range(1,13):wb.create_sheet('%d月"%m)#t新建月份工作表
wb.remove(wb[ 'Sheet'])#鹏除指定工作表
wb.save( '2019年计划表.xlsx')# 保存工作簿。

1.5.2实例应用(删除不符合条件的工作表)

import openpyxl
wb=openpyxl.load_workbook('2018年.xlsx')
#读取工作簿
for sh in wb:#循环工作簿中的工作表if sh.title.split('-')[O]!='北京":#判断工作表是否不等于北京wb.remove(sh)#棚除工作表
wb.save('北京.xlsx')#保存工作簿

1.5.3实例应用(批量复制工作表)

import openpyxl
wb=openpyxl.load_workbook('模板xlsx')
for m in range(1,13):wb.copy_worksheet(wb['demo']).title='%d月'%m
wb.remove(wb[ 'demo'])
wb.save('2018年各月表格.xlsx')

1.6单元格信息获取

1.6.1单元格数据获取

A1表示法:工作表['A1],R1C1表示法:工作表.cell(行号,列号)

1.6.2实例应用(汇总各表各单元格数据)

import openpyxl
wb = openpyxl.load_workbook('各年业绩表.xlsx')
print(sum([s['b14'].value for s in wb])
print(sum([s.cell(14,2).value for s in wb]))

1.7单元格区域信息获取

1.7.1单元格区域数据获取

1.工作表[起始单元格’∵ ‘终止单元格’]或工作表[‘起始单元格:终止单元格’],如 ws[‘A1’:‘F3’]或ws[‘A1:F3’]。此方法是按行读取的数据。
2工作表[‘起始行号’:‘结束行号’]或者工作表[起始行号:结束行号],如 ws[‘1’: ‘3’]或ws["1: 3’]。此方法是按行读取的数据。
3.工作表[起始列号: ‘结束列号]或者工作表[起始列号:结束列号’],如 ws[‘A’:’“F”]或ws[‘A: F’]。此方法是按列读取的数据。
4.获取(按行)指定工作表所有已用数据: list(workbook.worksheets[索引值].values)

1.7.2实例应用

按行求和(方法1)

import openpyxl
wb = openpyxl.load_workbook( 'test.xlsx')
ws=wb['成绩表'
# rng=ws['2:71']
rng=ws['A2':'E71']
print(['%s:%d分1%(rn[0].value,sum([r.value for r in rn][1:]) for rn in rng])

按行求和(方法2)

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.active
for xin list(ws.values)[1:]:print([x[0], sum(x[1:]))

按列统计平均值

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.active
for xin list(zip(*list(ws.values)))[1:]:print([x[O],float("%.2f'%(sum(x[1:])/len(x)-1))])

1.8行列信息获取

1.8.1行列信息获取

按行获取工作表使用区域数据:worksheet.rows
按列获取工作表使用区域数据:worksheet.columns
获取工作表中最小行号: worksheet.min_row
获取工作表中最小列号: worksheet.min_column
获取工作表中最大行号: worksheet.max_row
获取工作表中最大列号: worksheet.max_column
获取单元格的行号: cell.row
获取单元格的列号:cell.column
iter方法获取指定区域:
1.按行获取指定工作表单元格区域: worksheet.iter_rows(……)
2.按列获取指定工作表单元格区域: worksheet.iter_cols(……)
可以通过min_row、min_col、max_col、max_row这几个参数进行单元格区域的控制

1.8.2实例应用

按行求和

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')ws=wb.active
for r in [row for row in ws.rows][1:]:l=[wvalue for v in r]print([l[O],sum(I[1:]))

按列求最大值

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')
ws=wb.active
for c in [col for col in ws.columns][1:]:l=[vvalue for v in c]print([l[O],max(l[1:])])

按行求和

import openpyxl
wb=openpyxl.load_workbook('test.xlsx')wsewb.active
subtotal=[sum([v.value for v in row]) for row inws.iter_rows(min_row=2,min_col=2])]
namemv.value for v in ws[ "a']][1:]print( list(zip(name ,subtotal

按列求最大值

import openpyxcl
wb=openpyxil.load_workbook('test.xlsx")wsmwb.active
subtotal=[m ax([v.value for vin coll) for col in ws.iter_cols(min_row 2,min_col=2)]name=[v.value for v in ws['1]][1:]
print( list(zip(name ,subtotal))

动态获取单元格区域并汇总

import openpyxl
wb=openpyxl.load_workbook(" demo.xlsxe')
ws=wb.active
minr=ws.min_row
minc=ws.min_column
maxr=ws.max_row
maxc=ws.max_column
mgs=ws.iter_rows(min_row=minrt1,min_col minc+2,max_row=maxr-1,max_colemaxc-1)
subtotal=[min([v.value for v in row]) for row in rngs]
col=[v for v in
ws.iter_coks(min_row=minr+1,min_col=minc+1,max_row=maxr-1,max_col=minc+1)]
chanping=l[v.value for v in r] for r in col][0]
print( list(zip(chanping,subtotal))

1.9单元格的写入

1.9.1单元格与区域数据写入

A1表示法:工作表[‘A1’]=值,R1C1表示法:工作表.celI(行号,列号,值)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/684239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB实现朴素贝叶斯分类

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的分类算法,它假设特征之间相互独立,从而简化了计算复杂性。该算法常用于文本分类、垃圾邮件过滤、情感分析等应用场景。 MATLAB实现鸢尾花数据集分类代码如下: clear lo…

2024 前端面试题 附录2

这里记录的是今天原篇的知识点补充 原篇地址:2024 前端面试题(GPT回答 示例代码 解释)No.21 - No.40 目录 这里记录的是今天原篇的知识点补充原篇地址:[2024 前端面试题(GPT回答 示例代码 解释)No.21 …

2024 CKS 题库 | 7、Dockerfile检测

不等更新题库 CKS 题库 7、Dockerfile检测 Task 分析和编辑给定的Dockerfile /cks/docker/Dockerfile(基于ubuntu:16.04 镜像), 并修复在文件中拥有的突出的安全/最佳实践问题的两个指令。 分析和编辑给定的清单文件 /cks/docker/deployme…

Python·turtle库编程之:怎么画一个五角星?

文章目录 前言源码附: 前言 大家好,我是BoBo仔,这节课我要带来一期turtle库的使用教程——画五角星。话不多说,我们直接上代码。 源码 import turtle as t t.pencolor(yellow) t.fillcolor("yellow") t.penup() t.go…

全栈笔记_插件篇(谷歌扩展插件开发系列之 manifest.json配置文件)

manifest.json介绍 是web扩展技术必不可少的插件配置文件,放在根目录作用: 指定插件的基本信息 name:名称manifest_version:manifest.json文件的版本号,可以写2或3version:版本description:描述定义插件的行为: browser_action:定义插件在浏览器工具栏中的操作按钮,例…

react 【七】各种hooks的使用/SPA的缺点

文章目录 1、Hook1.1 为什么会出现hook1.2 useState1.3 useEffect1.4 useContext1.5 useReducer1.6 useCallback1.7 useMemo1.8 useRef1.8.1 ref绑定dom1.8.2 ref解决闭包缺陷 1.9 useImperativeHandle1.10 useLayoutEffect1.11 自定义Hook1.11.1 什么是自定义Hook1.11.2 Conte…

Rust 数据结构与算法:3栈:用栈实现符号匹配

1、符号匹配 如: (56)(78)/(43)、{ { ( [ ] [ ])}}、(ab)(c*d)func() 等各类语句的符号匹配。 这里我们关注的不是数字而是括号,因为括号更改了操作优先级,限定了语言的语义,这是非常重要的。如果括号不完整,那么整个…

【Deep Learning 1】神经网络的搭建

🌞欢迎来到PyTorch的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年2月16日&a…

消息队列RabbitMQ-使用过程中面临的问题与解决思路

消息队列在使用过程中会出现很多问题 首先就是消息的可靠性,也就是消息从发送到消费者接收,消息在这中间过程中可能会丢失 生产者到交换机的过程、交换机到队列的过程、消息队列中、消费者接收消息的过程中,这些过程中消息都可能会丢失。 …

gem5 garnet 合成流量: packet注入流程

代码流程 下图就是全部. 剩下文字部分是细节补充,但是内容不变: bash调用python,用python配置好configuration, 一个cpu每个tick运行一次,requestport发出pkt. bash 启动 python文件并配置 ./build/NULL/gem5.debug configs/example/garnet_synth_traffic.py \--num-cpus…

安卓游戏开发框架应用场景以及优劣分析

一、引言 在移动游戏开发领域,选择合适的开发框架是项目成功的关键因素之一。特别是对于安卓平台,由于其开放性和庞大的用户基础,不同的游戏开发框架应运而生,旨在帮助开发者高效地构建游戏应用。以下是一些流行的安卓游戏开发框架…

你好,C++(15)0.1*10不等于1.0——4.1.4 关系操作符4.1.5 逻辑操作符

4.1.4 关系操作符 在C中,除了需要用算术操作符对数据进行加减乘除的算术操作之外,我们有时候还需要对数据之间的关系进行操作,也就是对两个数据进行大小比较,得出它们之间的大小关系。在现实世界中,这种大小关系的比较…

vue-组件组成和组件通信(四)

组件的三大组成部分 (结构/样式/逻辑) scoped样式冲突 默认情况:写在组件中的样式会 全局生效 → 因此很容易造成多个组件之间的样式冲突问题。 1. 全局样式: 默认组件中的样式会作用到全局 2. 局部样式: 可以给组件加上 scoped 属性, 可以让样式只作用于当前组…

探索未来科技:人工智能与量子计算的新纪元

引言 在这个科技飞速发展的时代,我们正站在一个全新的起点。人工智能(AI)和量子计算作为两项颠覆性的技术,正引领着科技的未来。在这篇博客中,我们将深入探讨人工智能与量子计算的最新进展,以及它们如何改…

pytorch创建模型方式

1.继承自nn.Module的方式 from torch import nn import torch.nn.functional as F 继承自nn.Moduleclass LModel(nn.Module):def __init__(self):super().__init__()self.L1 nn.Linear(10,10)self.L2 nn.Linear(10,64)self.L3 nn.Linear(64,10)self.L4 nn.Linear(10,5)se…

C++初阶:适合新手的手撕list(模拟实现list)

上次讲了常用的接口:今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.空参构造函数(constructor)3.完善迭代器(iterator)(begin(),end())4.List Capacity(size(),empty())4.增删改查(push_back,pop_back,pop_f…

C++ bfs反向搜索(五十七)【第四篇】

今天我们来学习bfs的反向搜索。 1.反向搜索 反向搜索:是从目标状态出发进行的搜索,一般用于终点状态唯一,起点状态有多种,且状态转移是可逆的(无向边)情况。 例题:在一个长度为 n 的坐标轴上&a…

医药零售企业运营BI解决方案 连锁药房大数据解决方案 药店大数据解决方案

一、项目背景 连锁药店大数据项目建设的背景可以从以下几个方面进行分析: 行业趋势:随着医药行业的快速发展,连锁药店已成为药品零售的主要渠道。然而,随着市场竞争的加剧,连锁药店需要寻找新的竞争优势。通过大数据技术,连锁药店可以更好地了解消费者需求,提供个性化的…

2024年【T电梯修理】报名考试及T电梯修理复审考试

题库来源:安全生产模拟考试一点通公众号小程序 T电梯修理报名考试参考答案及T电梯修理考试试题解析是安全生产模拟考试一点通题库老师及T电梯修理操作证已考过的学员汇总,相对有效帮助T电梯修理复审考试学员顺利通过考试。 1、【多选题】增加旧电梯曳引…

p图考试,搜题软件哪个好?如何利用大学搜题工具查找特定学科的题目? #微信#知识分享

大学生必备,这条笔记大数据一定定要推给刚上大学的学弟学妹!! 1.三羊搜题 这是个微信公众号 是个公众号,支持文字、语音、截图搜题,截图搜题,同时也支持相似题查看及解析,因为可以在电脑上使…