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中if __name__ == "__main__"详细解释
Oct 21 Python
Python创建xml的方法
Mar 10 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
TensorFlow实现简单卷积神经网络
May 24 Python
python 获取键盘输入,同时有超时的功能示例
Nov 13 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
django用户登录验证的完整示例代码
Jul 21 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
python numpy矩阵信息说明,shape,size,dtype
May 22 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
详解Python中的路径问题
Sep 02 Python
一起来学习Python的元组和列表
Mar 13 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
加速XP搜索功能堪比vista
2007/03/22 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
提高PHP编程效率的方法
2013/11/07 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
jquery 日期分离成年月日的代码
2010/05/14 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
2014/12/29 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jQuery入门之层次选择器实例简析
2015/12/11 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
2016/10/31 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
详解Python中的序列化与反序列化的使用
2015/06/30 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
sealed修饰符是干什么的
2012/10/23 面试题
小学家长会邀请函
2014/01/23 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
初三学习计划书范文
2014/04/30 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
道歉信范文
2015/05/12 职场文书
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server