Python还能这么玩之只用30行代码从excel提取个人值班表


Posted in Python onJune 05, 2021

一、查找操作

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')

六、执行结果

Python还能这么玩之只用30行代码从excel提取个人值班表

七、总结

熟悉 openpyxl 模块的各个功能,方便对 excel 的操作;筛选提取自己关注的关键信息,重新建表;下一篇根据值班时间,用 python 自动给自己的微信发送信息,进行提示!

到此这篇关于Python还能这么玩之只用30行代码从excel提取个人值班表的文章就介绍到这了,更多相关Python从excel提取个人值班表内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
跟老齐学Python之一个免费的实验室
Sep 14 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
Python基于select实现的socket服务器
Apr 13 Python
Python读取数据集并消除数据中的空行方法
Jul 12 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
Python的几种主动结束程序方式
Nov 22 Python
pycharm全局搜索的具体步骤
Jul 28 Python
Python装饰器如何实现修复过程解析
Sep 05 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 Python
Python环境配置实现pip加速过程解析
Nov 27 Python
浅析pandas随机排列与随机抽样
Jan 22 Python
python垃圾回收机制原理分析
Apr 13 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
PHP类相关知识点实例总结
2016/09/28 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
node.js操作mongodb学习小结
2015/04/25 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
js中this对象用法分析
2018/01/05 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
react的hooks的用法详解
2020/10/12 Javascript
python将人民币转换大写的脚本代码
2013/02/10 Python
Python与Redis的连接教程
2015/04/22 Python
python opencv之SIFT算法示例
2018/02/24 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
关于Python的一些学习总结
2018/05/25 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
RIP版本1跟版本2的区别
2013/12/30 面试题
最新大学生自我评价
2013/09/24 职场文书
买卖协议书范本
2014/04/21 职场文书
英语专业求职信
2014/07/08 职场文书
2014年手术室工作总结
2014/11/26 职场文书
员工辞职信怎么写
2015/02/27 职场文书
小学教师节活动总结
2015/03/20 职场文书
小学信息技术教学反思
2016/02/16 职场文书
汽车销售合同文本
2019/08/08 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
python爬虫框架feapde的使用简介
2021/04/20 Python