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 def函数的定义、使用及参数传递实现代码
Aug 10 Python
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
Apr 24 Python
python学生管理系统代码实现
Apr 05 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
pandas 根据列的值选取所有行的示例
Nov 07 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
python  logging日志打印过程解析
Oct 22 Python
Python高级特性之闭包与装饰器实例详解
Nov 19 Python
Python基于numpy模块实现回归预测
May 14 Python
keras实现调用自己训练的模型,并去掉全连接层
Jun 09 Python
python 如何读、写、解析CSV文件
Mar 03 Python
拒绝盗图!教你怎么用python给图片加水印
python四个坐标点对图片区域最小外接矩形进行裁剪
Python OpenCV 图像平移的实现示例
Python包argparse模块常用方法
Jun 04 #Python
opencv读取视频并保存图像的方法
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 #Python
python opencv旋转图片的使用方法
You might like
上海无线电三厂简史修改版
2021/03/01 无线电
php设计模式之命令模式使用示例
2014/03/02 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
PHP文件操作实例总结
2016/09/27 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
常用js脚本
2006/12/03 Javascript
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
jQuery MD5加密实现代码
2010/03/15 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
python cumsum函数的具体使用
2019/07/29 Python
Python使用贪婪算法解决问题
2019/10/22 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
python字典的值可以修改吗
2020/06/29 Python
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
总经理文秘岗位职责
2014/02/03 职场文书
《三峡》教学反思
2014/03/01 职场文书
会计学专业自荐信
2014/06/25 职场文书
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸