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 相关文章推荐
详解Django通用视图中的函数包装
Jul 21 Python
Django 使用Ajax进行前后台交互的示例讲解
May 28 Python
Python subprocess模块常见用法分析
Jun 12 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
python3人脸识别的两种方法
Apr 25 Python
python对象与json相互转换的方法
May 07 Python
Python读写文件模式和文件对象方法实例详解
Sep 17 Python
Python可变参数会自动填充前面的默认同名参数实例
Nov 18 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
Django 设置多环境配置文件载入问题
Feb 25 Python
Python基础之tkinter图形化界面学习
Apr 29 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
javascript 常用代码技巧大收集
2009/02/25 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
浅谈Node Inspector 代理实现
2017/10/19 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
超简单的Python HTTP服务
2019/07/22 Python
Python笔记之工厂模式
2019/11/20 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
python如何基于redis实现ip代理池
2020/01/17 Python
python实现ftp文件传输功能
2020/03/20 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
植树节标语
2014/06/27 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
法人代表证明书格式
2014/10/01 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书
课外活动实习计划
2015/01/19 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android