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 相关文章推荐
python3学习之Splash的安装与实例教程
Jul 09 Python
Python脚本修改阿里云的访问控制列表的方法
Mar 08 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
Python模块汇总(常用第三方库)
Oct 07 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
Python实现投影法分割图像示例(二)
Jan 17 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
关于Python3爬虫利器Appium的安装步骤
Jul 29 Python
Django中和时区相关的安全问题详解
Oct 12 Python
python复合条件下的字典排序
Dec 18 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
php程序员应具有的7种能力小结
2014/11/27 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
python中列表元素连接方法join用法实例
2015/04/07 Python
78行Python代码实现现微信撤回消息功能
2018/07/26 Python
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
.NET常见笔试题集
2012/12/01 面试题
毕业生应聘幼儿园的自荐信
2013/11/20 职场文书
生产部统计员岗位职责
2014/01/05 职场文书
大学生村官任职感言
2014/01/09 职场文书
物流专业求职计划书
2014/01/10 职场文书
初中三好学生事迹材料
2014/01/13 职场文书
国税会议欢迎词
2014/01/16 职场文书
教师辞职报告范文
2014/01/20 职场文书
表彰大会策划方案
2014/05/13 职场文书
工商管理专业自荐信
2014/06/03 职场文书
成都人事代理协议书
2014/10/25 职场文书
安徽导游词
2015/02/12 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书