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执行系统命令的常见方法(全)
Oct 22 Python
Python中的变量和作用域详解
Jul 13 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Linux 修改Python命令的方法示例
Dec 03 Python
python实现简单加密解密机制
Mar 19 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
Dec 11 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 Python
Django基础CBV装饰器和中间件
Mar 22 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
神族 PROTOSS 概述
2020/03/14 星际争霸
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
深入解析php之apc
2013/05/15 PHP
PHP 无限级分类
2017/05/04 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
layer.open关闭父窗口 以及调用父页面的方法
2018/08/17 Javascript
vue2使用keep-alive缓存多层列表页的方法
2018/09/21 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
浅谈Python中的数据类型
2015/05/05 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
简单的Python调度器Schedule详解
2019/08/30 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
外包公司软件测试工程师
2014/11/01 面试题
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
Python 正则模块详情
2021/11/02 Python
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL