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进程间通信用法实例
Jun 04 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
May 25 Python
详解如何使用Python编写vim插件
Nov 28 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
Python自动发送邮件的方法实例总结
Dec 08 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
python创建子类的方法分析
Nov 28 Python
Pytorch之parameters的使用
Dec 31 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
基于python实现数组格式参数加密计算
Apr 21 Python
Python tkinter实现简单加法计算器代码实例
May 13 Python
总结Python变量的相关知识
Jun 28 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
基于php-fpm 参数的深入理解
2013/06/03 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
PHP文件操作详解
2016/12/30 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
Vue底层实现原理总结
2018/02/17 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
python通过floor函数舍弃小数位的方法
2015/03/17 Python
Python Pandas 箱线图的实现
2019/07/23 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
工商管理毕业生推荐信
2013/12/24 职场文书
演讲稿怎么写才完美
2014/01/02 职场文书
物流管理专业职业生涯规划书
2014/01/06 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
我爱我校演讲稿
2014/05/21 职场文书
法学院毕业生求职信
2014/06/25 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
2014年终个人总结报告
2015/03/09 职场文书
老员工辞职信范文
2015/05/12 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python