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分割文件的常用方法
Nov 01 Python
Python内置数据结构与操作符的练习题集锦
Jul 01 Python
python简单实现获取当前时间
Aug 27 Python
深入分析python中整型不会溢出问题
Jun 18 Python
基于Python开发chrome插件的方法分析
Jul 07 Python
Python 2.7中文显示与处理方法
Jul 16 Python
Python 访问限制 private public的详细介绍
Oct 16 Python
Pyqt QImage 与 np array 转换方法
Jun 27 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
django实现HttpResponse返回json数据为中文
Mar 27 Python
python3.x中安装web.py步骤方法
Jun 23 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
PHP使用NuSOAP调用Web服务的方法
2015/07/18 PHP
php curl常用的5个经典例子
2017/01/20 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
js中this的用法实例分析
2015/01/10 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
TypeScript入门-接口
2017/03/30 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
win系统下为Python3.5安装flask-mongoengine 库
2016/12/20 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
python安装Scrapy图文教程
2017/08/14 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
PyCharm+PySpark远程调试的环境配置的方法
2018/11/29 Python
python脚本开机自启的实现方法
2019/06/28 Python
PyQt5实现简单的计算器
2020/05/30 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
python实现无边框进度条的实例代码
2020/12/30 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
巴西网上药房:onofre
2016/11/21 全球购物
教师考核评语
2014/04/28 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
违规违纪检讨书范文
2015/05/06 职场文书