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
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
pycharm中使用anaconda部署python环境的方法步骤
Dec 19 Python
Python构建图像分类识别器的方法
Jan 12 Python
Python向excel中写入数据的方法
May 05 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
Python测试模块doctest使用解析
Aug 10 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
Django限制API访问频率常用方法解析
Oct 12 Python
python处理写入数据代码讲解
Oct 22 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
JavaScript学习笔记之DOM基础操作实例小结
2019/01/09 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
python实现保存网页到本地示例
2014/03/16 Python
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
Pytorch 实现权重初始化
2019/12/31 Python
Python操作Jira库常用方法解析
2020/04/10 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
精灵市场:Pixie Market
2019/06/18 全球购物
安全生产实施方案
2014/02/23 职场文书
租房协议书
2014/04/10 职场文书
申论倡议书范文
2014/05/13 职场文书
课例研修方案
2014/05/31 职场文书
民生工作实施方案
2014/05/31 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
python字符串的一些常见实用操作
2022/04/06 Python