IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python高效办公-2 -> 正文阅读

[Python知识库]python高效办公-2

何为python高效办公

???????什么叫高效办公?????那就是高效率!!!如今是智能时代还不会高效办公怎么办????
???????不会高效办公:
??????????????无法具有竞争力
??????????????难于升职加薪
??????????????无法解放双手陪对象(滑稽)
???????于是今天我开始陪着大家一起学习如何通过Python这门语言高效办公,由于本人知识也有限,若有好的建议或者有问题地方欢迎找我!!!)
友情提示,不管有没有基础,咋们就按照格式,思路来就好,不会的百度一下就好啦!
注:有代码的地方一定要敲打,重在基础,打好基础很重要不要忽视!!!不然嗯,脑子会了,手不会,或者哪天忘了



前言

废话不多说,我们知道高效办公”的三大敌人是—>Excel、Email、Word
我们将通过python语言来干掉这三个大坏蛋!解放双手!!!迎娶白富美
注意:第二部分主要为了熟悉第一部分知识并做基础案例,否则拆开会了,综合做就不会了!编程重在综合练习!讲的很基础,保证你能学会!!!


Python高效办公

一、openpyxl操作excel-Part1(点我即可穿越至第一部分!!!)

二、openpyxl操作excel-Part2

2.1表格读写案例分析

2.1.1案例一:获取个人工资信息

任务要求:
在11月的员工绩效表中找到漂亮妹妹1的薪资信息,然后呢需要将这部分信息写入到漂亮妹妹的工资信息表中!嗯,就这么简单
思路:
1??what? ????????找到【11月员工绩效表】、【plmm1工资信息表】
2??where? -->“查看相关数据”,打开【11月员工绩效表】,找到漂亮妹妹1的薪资信息。
???????????????????????继续“查看相关数据”,打开【plmm1工资信息表】,找到需写入数据的单元格
3??run!!! ?????????关闭工作簿,运行代码,打开【plmm1工资信息表】,查看写入的效果
11月员工绩效工资表
plmm1的工资信息表中还没数据,需要将总表中数据写入进来才可以!不然plmm1就没钱了哦!
在这里插入图片描述
思路有了,代码会写了嘛??很简单的!
参考代码:

# 从openpyxl库导入load_workbook函数
from openpyxl import load_workbook

# 打开【11月员工绩效表】的工作簿,获取活动工作表
performance_wb  = load_workbook('./11月员工绩效表.xlsx')
performance_ws = performance_wb.active

# 打开【plmm1工资信息表】的工作簿,获取活动工作表
info_wb = load_workbook('./plmm1工资信息表.xlsx')
info_ws = info_wb.active

# 获取【绩效】值
performance = performance_ws['D14'].value
# 获取【奖金】值
bonus = performance_ws['E14'].value
# 获取【基本工资】值
base = performance_ws['F14'].value

# 写入【绩效】值
info_ws['E12'].value = performance
# 写入【奖金】值
info_ws['F12'].value = bonus
# 写入【基本工资】值
info_ws['G12'].value = base

# 保存对【plmm1工资信息表】工作簿的写入
info_wb.save('./plmm1工资信息表.xlsx')

代码运行后:
发工资啦!!!
总结一下案例一:读取单元格的数据,原样写入其他已有的工作簿,属于“单元格读写”模式。

2.1.2案例二:生成前十行绩效信息表

任务要求:
在11月的员工绩效表将前11行数据提取并写入另一个文件中,嗯,就这么简单(与案例一区别就是一个是对单元格操作,这是对多行进行操作)
思路:
1??what? ????????找到【11月员工绩效表】
2??where? -->“查看相关数据”,打开【11月员工绩效表】,提取前11行信息。
???????????????????????新建工作薄,将提取的信息写入即可
3??run!!! ?????????关闭工作簿,运行代码,打开新建的工作薄,查看写入的效果
参考代码:

# 从openpyxl库导入load_workbook和Workbook
from openpyxl import load_workbook, Workbook

# 打开【11月员工绩效表.xlsx】工作簿
performance_wb = load_workbook('./11月员工绩效表.xlsx')
# 获取活动工作表
performance_ws = performance_wb.active

# 新建工作簿
new_wb = Workbook()
# 获取活动工作表
new_ws = new_wb.active

# 获取performance_ws的前十一行数据
for row in performance_ws.iter_rows(max_row=11, values_only=True):
    # 将数据写入新的工作表
    new_ws.append(row)

# 保存新工作簿为【员工绩效表-模板.xlsx】
new_wb.save('员工绩效表-模板.xlsx')

????????总结案例二其实就是简单的多行读取和写入,先获取前十一行的数据,再按行操作,每行原样使用,最后写入到新建的工作簿中。关键在于对表对象的方法使用,以及注意细节(保存等)
???????案例一和案例二,最大的不同点是所取的数据不一样。案例一获取三个单个单元格的数据,案例二则是取出前十行的数据范围。
???????同时呢,也有两个相同点,都是原样使用数据,而且输出的结果都是写入其他工作表中。也就是说“获取数据–>如何使用数据–>输出什么结果”的基本结构中,“挥舞”着各自不同的“招式”。

2.1.3Excel文件读写”问题分解

????????我们可以根据“需要获取哪些数据范围”,“如何使用数据”,“如何输出结果”的步骤过程来分析“Excel文件读写类”的问题。
????????但是这三大步骤问题的“答案”可以有多种变体,从而衍生出不同的功能效果,解决不同的实际需求。

1. 获取哪些数据范围

????????常常与Excel表格打交道的话,你肯定知道,即使是对于同一个工作簿,同一个工作表,人们想要获取的数据就可能千差万别。
????????比如【10月薪资绩效表】,可能需要江宇的个人数据,也可能需要前十行数据作为模版,还可能需要所有员工的数据进行汇总等等。
根据要获取什么数据范围内的单元格来划分,大致可以分为三类:
1、已知坐标的个别单元格
2、单行或单列范围内的单元格
3、多行多列组成的矩形范围内的单元格
在这里插入图片描述

这三种范围内的单元格,获取的语法可不相同
在这里插入图片描述
????????所以当遇到Excel文件读写问题,我们首先确认,需要处理的数据是来自哪几个工作簿、哪几个工作表、哪些数据范围的单元格。
????????确认好这个问题,我们就可以选择对应的语法,去获取数据啦。
在这里插入图片描述

2. 如何使用数据

????????取出数据后,就可以使用数据了。
????????虽然上面两个案例“使用数据”的方式比较简单,但是如果我说出其他的一些操作方式,你也一定能够理解。毕竟它们就源于日常的Excel使用。
????????那么除了原样的写入数据,我们还可以从行数据中抽取数据,进行计算(数学计算、字符串拼接等),比如通过“提成”与“绩效”之和,得到本月所有奖金的金额。
????????另外,还可以抽取数据,形成新的数据行,比如抽取出每行第1个和最后1个单元格的内容,得到一行新的数据。
????????当然还可以将获得的数据,存储为Python中的数据类型,以便后续使用。比如把每行数据存为字典类型等等。
在这里插入图片描述

3. 如何输出结果

????????数据处理和使用后,肯定会输出一定的数据结果。那么使用完数据,一般会得到什么样新的数据结果呢?
????????前面我们看到的主要是写入到其他工作表,输出新的工作簿内容。其实“写入到工作表”这种方式下也会有不少细分:
在这里插入图片描述

????????除了你已经知道的,案例一和案例二中的“写入单元格数据”或“写入行数据”。
还可以“指定”从哪一行写起,“指定”写到具体坐标位置等;还可以写到不同的工作表对象中,比如原工作表、其他已有工作表、或者新建工作簿的工作表等。
另外,如果加上“循环”,还可以同时写到多个不同的工作表中,或者多个不同的坐标位置上。
????????那还会不会还有其他输出结果呢?还可以将处理后的数据直接输出,打印到终端。
在这里插入图片描述

总体而言,我们可以将问题分解划分为三个步骤:获取数据,使用数据,数据输出,各步骤中又蕴含着不同的具体表现。
在这里插入图片描述
????????像案例一这种,获取的数据是单个单元格;然后将所取数据原样写入到另外的表格。属于典型的单元格读写模式。
????????像案例二这种,获取的数据是矩形区域的,一般要按行取出;然后将所取数据原样写入到另外的表格中。属于典型的按行读写模式
在这里插入图片描述

2.1.4案例三:计算并打印奖金信息

任务要求:
????????依然是从【11月员工绩效表】提取所有员工的工资信息,然后根据每行中员工的“绩效”与“提成”的数值之和,计算出奖金总额,最后按照固定格式输出每位员工的奖金信息。
在这里插入图片描述
思路:
基于上面的要求,我们可以将程序分为三步来实现:
1)取出所有员工信息的数据范围:打开【11月员工绩效表】工作表,取出数据范围。
2)提取并计算出新数据:提取出【绩效】和【提成】,计算出“奖金”数据。
3)拼接并打印:拼接员工名、工号、奖金,打印出固定格式的信息。

在这里插入图片描述
参考代码:

# 从openpyxl库导入load_workbook和Workbook
from openpyxl import load_workbook, Workbook

# 打开【11月员工绩效表.xlsx】工作簿
performance_wb = load_workbook('./11月员工绩效表.xlsx')
# 获取活动工作表
performance_ws = performance_wb.active

# 获取performance_ws中除表头外的数据
for row in performance_ws.iter_rows(min_row=2, values_only=True):
    # 读取【工号】
    staff_id = row[0]
    # 读取【员工姓名】
    staff_name = row[1]
    # 读取【绩效】
    performance = row[3]
    # 读取【提成】
    bonus = row[4]
    # 计算“奖金”
    award = performance + bonus
    # 打印结果
    print('工号:{},姓名:{},本月奖金为:{}'.format(staff_id, staff_name, award))

小细节:
使用iter_rows()时,要注意values_only参数,其参数值不同,后面获取单元格的代码就会不同
在这里插入图片描述
还要注意缩进!

2.1.4案例四:创建薪资信息字典

任务要求:
????????依然是【11月薪资绩效表】,要从这个总的薪资表中,读取所需数据范围的行数据,然后取出部分信息,将其对应存储在字典中。
思路:
????????事情是这样的,【11月薪资绩效表】中的员工信息比较多,如果要找到某位同事(比如找到漂亮妹妹1的绩效、基本工资等)得按行整个查找一遍
????????如果用Python的话,有没有类似Excel软件中的查找功能,能根据人名或者工号等有代表性的关键字,找到这个人所在的行,得到这行的信息呢?
????????还记得Python中的字典类型吗?字典元素为键值对,根据唯一的键,可以找到对应的值
所以啊,咱们可以“以工号为键,以每位员工的行数据作为值”,存储成一个“薪资信息字典”。
这样就能让“员工的工号”与“该员工的各项薪资信息”形成映射关系,找到工号就能对应关联到员工信息。而且利用字典提取键和值的方式,也可以很方便地进行数据查询。
参考代码:

# 从openpyxl库导入load_workbook函数
from openpyxl import load_workbook

# 打开【11月员工绩效表.xlsx】工作簿
performance_wb = load_workbook('./11月员工绩效表.xlsx')
# 获取活动工作表
performance_ws = performance_wb.active

# 创建员工信息字典
staff_info = {}

# 从第二行开始读取工作表中的信息
for row in performance_ws.iter_rows(min_row=2, values_only=True):
    # 取出工号
    member_number = row[0]
    # 将信息存入员工信息字典
    staff_info[member_number] = {
         '姓名': row[1],
         '部门': row[2],
         '绩效': row[3],
         '奖金': row[4],
         '基本工资': row[5],
         '是否确认': row[6]
     }
print(staff_info)

在这里插入图片描述
在这里插入图片描述
其实,此时是形成了,“字典的值”也都是一个字典的情况,也就是字典嵌套
除了把每行员工的信息存为字典,我们还可以把每行员工的信息整个存储为元组类型,比如下图:
在这里插入图片描述
???????存为元组后,也可以根据索引查找对应的信息,比如通过staff_info[member_number][1]得到员工姓名
???????不过呢,你可能会费解,为什么在使用数据时要将其存储为字典,仅仅是为了打印输出吗?
???????其实不然,还记得本案例想解决的问题吗?我们想要根据工号,找到该员工对应的信息。
???????我根据得到的字典,写了一个稍复杂的程序。下面就体验一下“查询员工信息字典”的好用之处。

# 设置薪资信息字典(以前8条数据为例)
staff_info = {
    'S1001': {'姓名': '漂亮妹妹1', '部门': '销售部', '绩效': 100, '提成': 2250, '基本工资': 7500, '是否确认': '是'},
    'S1002': {'姓名': '漂亮妹妹2', '部门': '后勤部', '绩效': 100, '提成': 4250, '基本工资': 7500, '是否确认': '是'},
    'S1003': {'姓名': '漂亮妹妹3', '部门': '后勤部', '绩效': 300, '提成': 3500, '基本工资': 6500, '是否确认': '是'},
    'S1004': {'姓名': '漂亮妹妹4', '部门': '开发部', '绩效': 100, '提成': 2750, '基本工资': 7500, '是否确认': '否'},
    'S1005': {'姓名': '漂亮妹妹5', '部门': '开发部', '绩效': 100, '提成': 1750, '基本工资': 6000, '是否确认': '是'},
    'S1006': {'姓名': '漂亮妹妹6', '部门': '销售部', '绩效': 300, '提成': 4250, '基本工资': 7000, '是否确认': '是'},
    'S1007': {'姓名': '漂亮妹妹7', '部门': '运营部', '绩效': 200, '提成': 1500, '基本工资': 7000, '是否确认': '是'},
    'S1008': {'姓名': '漂亮妹妹8', '部门': '后勤部', '绩效': 300, '提成': 1500, '基本工资': 9500, '是否确认': '是'}
}

# 输入你想查询的员工的工号
staff_id = input('请输出你所查询员工的工号(如:S1001):')

# 根据工号(键)找到员工信息(值)
dict_staff = staff_info.get(staff_id)

# 判断该员工是否存在
if dict_staff:
    # 输入你想要查询的员工信息
    search_info = input('请输出你想查询的信息(如:姓名/部门/绩效/提成/是否确认):')

    # 判断该员工信息是否存在
    if dict_staff.get(search_info):
        print('经查询,该员工' + search_info + '为:')
        print(dict_staff[search_info])
    # 无此表头时,无法查询
    else:
        print('所输信息类型错误,只能查询姓名、部门、绩效、提成、是否确认')

# 无此工号时,无法查询
else:
    print('所输工号错误')


你可以复制这些代码去试试,就知道字典格式有多方便使用了,前提是你需要学会从表中提取关键信息!
???????另外,当我们有多个表格需要进行对比筛选或者分类时,将数据存为字典也是不错的选择。
因为,当把多个表格中相同的数据,比如【11月薪资绩效表】和【10月薪资绩效表】中的工号,用它作为“暗号”,查出各自的表格信息后,再进行对比或分类
案例分解
三部曲总结:
在这里插入图片描述
加油!共勉!

后续更加精彩!

????????????????????????????????????????未完待续!!!!持续更新中
作者联系方式:
QQ:747498947

wx:SuperMan-Gyd

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:15:03  更:2021-12-15 18:15:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:30:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码