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 Mysql自动备份脚本
Jul 14 Python
python中as用法实例分析
Apr 30 Python
python字符串的常用操作方法小结
May 21 Python
python批量读取txt文件为DataFrame的方法
Apr 03 Python
Python wxPython库Core组件BoxSizer用法示例
Sep 03 Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
Python二维码生成识别实例详解
Jul 16 Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 Python
Python3.7黑帽编程之病毒篇(基础篇)
Feb 04 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
May 17 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
Feb 22 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
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
JavaScript让Textarea支持tab按键的方法
2015/06/26 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
第八篇Bootstrap下拉菜单实例代码
2016/06/21 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
使用Python脚本在Linux下实现部分Bash Shell的教程
2015/04/17 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
2014年上半年工作自我评价
2014/01/18 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android