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挑选文件夹里宽大于300图片的方法
Mar 05 Python
21行Python代码实现拼写检查器
Jan 25 Python
python如何重载模块实例解析
Jan 25 Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
Python Tkinter模块 GUI 可视化实例
Nov 20 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
django 解决自定义序列化返回处理数据为null的问题
May 20 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
Feb 26 Python
python分分钟绘制精美地图海报
Feb 15 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
用PHP调用数据库的存贮过程
2006/10/09 PHP
基于mysql的bbs设计(四)
2006/10/09 PHP
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
Python中的hypot()方法使用简介
2015/05/18 Python
深入理解python中的select模块
2017/04/23 Python
python 3利用BeautifulSoup抓取div标签的方法示例
2017/05/28 Python
python实现简易通讯录修改版
2018/03/13 Python
Python 复平面绘图实例
2019/11/21 Python
Python Celery多队列配置代码实例
2019/11/22 Python
Python time库基本使用方法分析
2019/12/13 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
芝加哥牛排公司:Chicago Steak Company
2018/10/31 全球购物
优质服务心得体会(共4篇)
2016/01/22 职场文书
python 命令行传参方法总结
2021/05/25 Python
python实现简单的三子棋游戏
2022/04/28 Python