Python还能这么玩之只用30行代码从excel提取个人值班表
作者:Rattenking 发布时间:2022-05-03 22:49:45
标签:Python,excel,提取,表
一、查找操作
1.Excel 模块 xlrd,xlwt,xlutils 分别负责 Excel 文件的读、写、读写转换工作!
2.openpyxl 直接可以对 Excel 文件读写!
3.pandas 直接可以对 Excel 文件读写!
二、安装 openpyxl 模块
pip install openpyxl
三、读取并筛选值班表中自己的信息
1.读取所有的值班信息;
2.由于一般情况 excel 都会有部分表格为空,保存全部 None 的 excel 行字符串数据;
3.循环全部的值班数据,将当前行数据形成一个数据字符串;
4.判断当前值班信息字符串是否含有自己的姓名;
5.对含有自己信息的数据中关键信息(值班时间,姓名)进行存储;
6.然后判断当前字符串是否含有全部 None 的数据;
7.由于值班表没有空出的行,所以查到 None,直接跳出循环。
dutys = []
book = openpyxl.load_workbook('duty.xlsx',data_only=True)
sheet = book.active
all_data = book.get_sheet_by_name("日常加班")
none_str = ''.join([str(None).ljust(20) for c in range(1,all_data.max_column+1)])
for r in range(1,all_data.max_row + 1):
cur_str = ''.join([str(all_data.cell(row=r,column=c).value).ljust(20) for c in range(1,all_data.max_column+1)])
if cur_str.find("***") >= 0:
dutys.append({
"date": all_data.cell(row=r,column=2).value,
"name": all_data.cell(row=r,column=3).value
})
elif cur_str.find(none_str) >= 0:
break
return dutys
四、创建自己的值班信息表
1.创建一个值班信息表的 excel;
2.将自己的值班信息循环;
3.将信息填入创建的表格。
book = openpyxl.Workbook()
sheet = book.active
for i in range(len(dutys)):
sheet.cell(row=1 + i, column=1).value = dutys[i].get("name")
sheet.cell(row=1 + i, column=2).value = f'{dutys[i].get("date")}'
book.save('my_duty.xlsx')
五、全部代码
#!/usr/bin/env python
"""
@Author :Rattenking
@Date :2021/06/02 10:19
@CSDN :https://blog.csdn.net/m0_38082783
"""
import openpyxl
import time
def get_my_duty_date():
dutys = []
book = openpyxl.load_workbook('duty.xlsx',data_only=True)
sheet = book.active
all_data = book.get_sheet_by_name("日常加班")
none_str = ''.join([str(None).ljust(20) for c in range(1,all_data.max_column+1)])
for r in range(1,all_data.max_row + 1):
cur_str = ''.join([str(all_data.cell(row=r,column=c).value).ljust(20) for c in range(1,all_data.max_column+1)])
if cur_str.find("***") >= 0:
dutys.append({
"date": all_data.cell(row=r,column=2).value,
"name": all_data.cell(row=r,column=3).value
})
elif cur_str.find(none_str) >= 0:
break
return dutys
def create_my_duty_list(dutys):
book = openpyxl.Workbook()
sheet = book.active
for i in range(len(dutys)):
sheet.cell(row=1 + i, column=1).value = dutys[i].get("name")
sheet.cell(row=1 + i, column=2).value = f'{dutys[i].get("date")}'
book.save('my_duty.xlsx')
if __name__ == "__main__":
start_time = int(round(time.time() * 1000))
dutys = get_my_duty_date()
create_my_duty_list(dutys)
end_time = int(round(time.time() * 1000))
print(f'本次提取值班表时间:{end_time - start_time}ms')
六、执行结果
七、总结
熟悉 openpyxl 模块的各个功能,方便对 excel 的操作;筛选提取自己关注的关键信息,重新建表;下一篇根据值班时间,用 python 自动给自己的微信发送信息,进行提示!
来源:https://blog.csdn.net/m0_38082783/article/details/117463183


猜你喜欢
- 1 什么是 NumpyNumPy,是 Numerical Python 的简称,用于高性能科学计算和数据分析的基础包,像数学科学工具(pan
- 问题描述:在django中创建了一个app,而且在app中自定义创建了几个数据表,在同步的时候系统自带的表可以成功,但是models中的没有
- 前言mysql版本为mysql> select version();+-----------+| version() |+------
- 在日常应用中,往往根据实际需求录入一些值,而这些值不能直接使用,所以Sql中经常会对字段值进行一些常规的处理。这里搜集了(提取数字、英文、中
- Doing INTERSECT and MINUS in MySQL Doing an INTERSECT An INTERSECT is
- 一、selenium实战这里我们只会用到很少的selenium语法,我这里就不补充别的用法了,以实战为目的二、打开艺龙网可以直接点击这里进入
- 过去有很多网页设计师喜欢将他们的网页效果图用table布局实现成网页,但是这样做会遇到一个比较麻烦的问题就是,后期调试和维护会相当的困难。现
- ALTER DATABASE DATAFILEd:\ORANT\DATABASE\USER1ORCL.ORA RESIZE 10
- 整理字符串输入整理用户输入的问题在编程过程中极为常见。通常情况下,将字符转换为小写或大写就够了,有时你可以使用正则表达式模块「Regex」完
- 有时候我们会有这样的一个需求:我们定义了一个 Python 的方法,方法接收一些参数,但是调用的时候想将这些参数用命令行暴露出来。比如说这里
- 一 MySQL Workbench MySQL Workbench提供DBAs和developers一个集成工具环境: 1)数据库设计和建模
- 前言:在数据库开发过程中我们经常会使用分页,核心技术是使用用limit start, count分页语句进行数据的读取。 一、My
- 而随着设备硬件配置的不断提升,对中小型应用程序来说,对算法的空间复杂度的要求也宽松了不少。不过,在当今 Web2.0 时代,对应用程序的时间
- 本文实例讲述了Python中defaultdict与lambda表达式用法。分享给大家供大家参考,具体如下:从教程中看到defaultdic
- 内容摘要:网页设计师制作网页最常用的设计软件应该就算adobe的产品Photoshop了,当然Photoshop不仅可以设计网页,不过作为网
- 问题描述vscode中跨目录的模块调用远不如pycharm中的来的简单,在pycharm中即使是不同库文件夹中子函数也可以进行互相调用。而在
- np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等。np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等。具体见示
- html5带给我们的不仅仅是更多语义丰富的标签,还有更多更牛逼的特性,比如“离线存储”。 对于台式电脑来说,或者它并没有带来什么惊喜,但是对
- 最近一直在整理统计图表的绘制方法,发现Python中除了经典Seaborn库外,还有一些优秀的可交互的第三方库也能实现一些常见的统计图表绘制
- 1.在python文件下新建python文件,输入文件名后按Enter键生成,比如: one.py .2.简单输入python代码: pri