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获取服务器信息的最简单实现方法
Mar 05 Python
python计算N天之后日期的方法
Mar 31 Python
Ruby元编程基础学习笔记整理
Jul 02 Python
python实现稀疏矩阵示例代码
Jun 09 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 Python
Python BS4库的安装与使用详解
Aug 08 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
如何在python中实现ECDSA你知道吗
Nov 23 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
php数组查找函数总结
2014/11/18 PHP
javascript继承之为什么要继承
2012/11/10 Javascript
JS两种定义方式的区别、内部原理
2013/11/21 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
Python实现PS图像调整之对比度调整功能示例
2018/01/26 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Django中使用Celery的方法示例
2018/11/29 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
幼儿园大班新学期寄语
2014/01/18 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
教师个人自我评价
2015/03/04 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫