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中__str__和__repr__方法的区别
Apr 17 Python
Python类定义和类继承详解
May 08 Python
Python文件处理
Feb 29 Python
Python算法之图的遍历
Nov 16 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
使用Python实现跳帧截取视频帧
May 31 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
Python 实现自动完成A4标签排版打印功能
Apr 09 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
Python文件操作模拟用户登陆代码实例
Jun 09 Python
python打包生成so文件的实现
Oct 30 Python
python爬取微博评论的实例讲解
Jan 15 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
浅析PHP 按位与或 (^ 、&)
2013/06/21 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
js multiple全选与取消全选实现代码
2012/12/04 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
python开发中range()函数用法实例分析
2015/11/12 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
python如何实现异步调用函数执行
2019/07/08 Python
荷兰网上鞋店:Ziengs.nl
2017/01/02 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
银行职员个人的工作自我评价
2014/02/15 职场文书
电子商务求职信
2014/06/15 职场文书
分居协议书范本
2014/11/03 职场文书
特此通知格式
2015/04/27 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
音乐课外活动总结
2015/05/09 职场文书
交通事故被告代理词
2015/05/23 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python