Python使用openpyxl批量处理数据


Posted in Python onJune 23, 2021

   前言,因为经常使用Excel处理数据,像表格内的筛选,表格间数据的复制,都是简单重复的操作,十分枯燥无聊,为了提高效率,主要是自己懒,特地研究openpyxl,发现能够简化个人劳动量,自己也是小白,特意写一篇文章,共同探讨。

安装openpyxl

这个要说简单也很简单,就是 pip install openpyxl
难也十分难,因为很多人安装不成功,各种报错,而且错误都是英文,还看不懂。大家可以搜索安装openpyxl,有教程指导,应该问题不大。

开始学习

首先导入库 openpyxl

import openpyxl as op
‘引入库,并把库的名字改为op,这样后面操作会少打很多字母,毕竟懒才是促进社会进步的阶梯'

打开指定工作表

wb = op.load_workbook('C:\\Users\\Administrator\\Desktop\\演示表.xlsx')

注意 \中第一个斜杠是转移符, .xlsx才是openpyxl可以处理的格式

显示工作表中有哪些子表

print(wb.sheetnames)

我操作的工作表中只有一个表,代码显示结果是

Python使用openpyxl批量处理数据

操作工作表

要实现操作工作表,首先要选中它

w1 = wb['表1']

有多种方法可以选中这个表,这里就用最简单的一种,就是 工作表 + 子表名字

打印一个A1表格的内容

print((w1['A1'].value))

打印一列表格的内容,

for i in w1['A']:
    print(i.value)

打印一列表格中部分内容

for i in w1['A2':'A5']:
    for j in i:
        print(j.value)

注意,这里多加了一个循环,在选中一列中部分表格时(A2到A5),第一次循环产生的格式和选中整列的格式会不一样,需要再一次循环,才能访问到单元格的值

批量改变某一列的内容

Python使用openpyxl批量处理数据

我们将给户主姓名这一列加入数字,一次为1,2,3,4…

import openpyxl as op
wb = op.load_workbook('C:\\Users\\Administrator\\Desktop\\演示表.xlsx')
print(wb.sheetnames)
w1 = wb['表1']
m = 0
for i in w1['B3':'B12']:
    for j in i:
        m = m + 1
        s = j.value + str(m)
        w1['B%d'%(m+2)] = s
wb.save('C:\\Users\\Administrator\\Desktop\\演示表.xlsx')

运行后表格如下

Python使用openpyxl批量处理数据

需要注意的是,操作时表格应处于关闭状态,操作完需要保存命令

根据某一项内容,改变对应项的内容
如果姓名含“雷”这个字,则要将其电话更改为0

import openpyxl as op
wb = op.load_workbook('C:\\Users\\Administrator\\Desktop\\演示表.xlsx')
print(wb.sheetnames)
w1 = wb['表1']
m = 0
for i in w1['B3':'B12']:
    for j in i:
        for n in j.value:
            if n == '雷':
                s = str(j)
                s = s[-3:]
                s = ''.join([x for x in s if x.isdigit()])
                s = int(s)
                w1['D%d'%s] = 0
                print(s)
wb.save('C:\\Users\\Administrator\\Desktop\\演示表.xlsx')

这段代码实现了我们的诉求,即如果姓名含“雷”这个字,则要将其电话更改为0,但是十分丑陋,因为我没找到一个简洁的命令或是方法,实现根据单元格参数筛选出对应的行数,希望有这个的大神指点迷津,这是这段代码的结果

Python使用openpyxl批量处理数据

总结

python 很强大,openpyxl也很强大,能够批量处理Excel数据,但本人python功底不足,代码实在不好看,希望有大神指点一二,共同提高python水平

以上就是Python使用openpyxl批量处理数据的详细内容,更多关于Python批量处理的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
浅析Python中的for 循环
Jun 09 Python
itchat接口使用示例
Oct 23 Python
对TensorFlow中的variables_to_restore函数详解
Jul 30 Python
python 字典修改键(key)的几种方法
Aug 10 Python
python实现反转部分单向链表
Sep 27 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
Dec 06 Python
将pandas.dataframe的数据写入到文件中的方法
Dec 07 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
python ---lambda匿名函数介绍
Mar 13 Python
Python tkinter界面实现历史天气查询的示例代码
Aug 23 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 Python
Python基础之函数嵌套知识总结
May 23 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
opencv-python图像配准(匹配和叠加)的实现
Python初学者必备的文件读写指南
Jun 23 #Python
总结Python连接CS2000的详细步骤
python图片灰度化处理的几种方法
详解Python中的进程和线程
详解Go语言运用广度优先搜索走迷宫
You might like
如何使用PHP中的字符串函数
2006/11/24 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
大家在抢红包,程序员在研究红包算法
2015/08/31 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
浅谈JavaScript function函数种类
2014/12/29 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
jquery拖拽自动排序插件使用方法详解
2020/07/20 jQuery
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
python正则分析nginx的访问日志
2017/01/17 Python
python字典DICT类型合并详解
2017/08/17 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
使用python对excel表格处理的一些小功能
2021/01/25 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
上海奥佳笔试题面试题
2016/11/16 面试题
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
软件测试工程师面试问题精选
2016/10/28 面试题
六查六看个人剖析材料
2014/10/14 职场文书
班主任工作实习计划
2015/01/16 职场文书
银行催款通知书
2015/04/17 职场文书
保险公司反洗钱宣传活动总结
2015/05/08 职场文书
罗马假日观后感
2015/06/08 职场文书
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers