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 相关文章推荐
教你如何在Django 1.6中正确使用 Signal
Jun 22 Python
Python实现的石头剪子布代码分享
Aug 22 Python
Python求导数的方法
May 09 Python
python编程开发之类型转换convert实例分析
Nov 13 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
Python实现求数列和的方法示例
Jan 12 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
Python企业编码生成系统总体系统设计概述
Jul 26 Python
Apache部署Django项目图文详解
Jul 30 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
Feb 25 Python
python列表删除和多重循环退出原理详解
Mar 26 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
php发送邮件的问题详解
2015/06/22 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
jQuery Clone Bug解决代码
2010/12/22 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
js日期联动示例
2014/05/02 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
vue bootstrap小例子一枚
2017/06/09 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
JS设计模式之数据访问对象模式的实例讲解
2017/09/30 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
python去掉字符串中重复字符的方法
2014/02/27 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
财务管理专业推荐信
2013/11/19 职场文书
高一历史教学反思
2014/01/13 职场文书
一年级小学生评语
2014/04/22 职场文书
委托书怎么写
2014/07/31 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
九寨沟导游词
2015/02/02 职场文书
电气工程师岗位职责
2015/02/12 职场文书
golang 实现两个结构体复制字段
2021/04/28 Golang