21番茄网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 21番茄网
查看: 1148|回复: 6

excel常用练习

[复制链接]

646

主题

799

帖子

2686

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2686
发表于 2021-1-22 10:33:55 | 显示全部楼层 |阅读模式
excel常用练习
# 从openpyxl库导入load_workbook函数
from openpyxl import load_workbook

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

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

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

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

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






上一篇:os.path.join()构造文件路径
下一篇:freegames(玩游戏)和pillow库(图像处理)
回复

使用道具 举报

646

主题

799

帖子

2686

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2686
 楼主| 发表于 2021-1-22 10:36:07 | 显示全部楼层
# 从openpyxl库导入load_workbook和Workbook
from openpyxl import load_workbook, Workbook

# 打开【10月员工绩效表.xlsx】工作簿
performance_wb = load_workbook('./material/10月员工绩效表.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=10, values_only=True):
# 将数据写入新的工作表
new_ws.append(row)

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


回复

使用道具 举报

646

主题

799

帖子

2686

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2686
 楼主| 发表于 2021-1-22 10:42:21 | 显示全部楼层
from openpyxl import load_workbook, Workbook

# 打开【10月考勤统计.xlsx】工作簿
wb = load_workbook('./material/10月考勤统计.xlsx')
# 获取活动工作表
ws = wb.active

# 获取表头
late_header = []
for cell in ws[1]:
late_header.append(cell.value)

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

# 将表头写入新工作簿的工作表中
new_ws.append(late_header)

# 从第二行开始遍历表格
for row in ws.iter_rows(min_row=2, values_only=True):
# 取出姓名,迟到时间和迟到次数
name = row[1]
time = row[3]
number = row[-1]
# 判断是否迟到
if time > 45 and number > 3:
print('{}迟到了{}分钟,迟到了{}次'.format(name, time, number))
# 将迟到人员信息写入新工作簿的工作表中
new_ws.append(row)

# 将新工作簿保存为【10月迟到人员信息.xlsx】
new_wb.save('./material/10月迟到人员信息.xlsx')


回复

使用道具 举报

646

主题

799

帖子

2686

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2686
 楼主| 发表于 2021-1-22 10:43:14 | 显示全部楼层
from openpyxl import load_workbook, Workbook

# 打开【10月考勤统计.xlsx】工作簿
wb = load_workbook('./material/10月考勤统计.xlsx')
# 获取活动工作表
ws = wb.active

# 获取表头
late_header = []
for cell in ws[1]:
late_header.append(cell.value)

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

# 将表头写入新工作簿的工作表中
new_ws.append(late_header)

# 从第二行开始遍历表格
for row in ws.iter_rows(min_row=2, values_only=True):
# 取出姓名,部门,迟到时间和迟到次数
name = row[1]
department = row[2]
time = row[3]
number = row[-1]
# 判断是否迟到
if department == '人力资源部' and time > 45 and number > 3:
print('人力资源部的{}迟到了{}分钟,迟到了{}次'.format(name, time, number))
# 将迟到人员信息写入新工作簿的工作表中
new_ws.append(row)

# 将新工作簿保存为【10月迟到人员信息.xlsx】
new_wb.save('./material/人力资源部10月迟到人员信息.xlsx')


回复

使用道具 举报

646

主题

799

帖子

2686

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2686
 楼主| 发表于 2021-1-22 10:43:55 | 显示全部楼层
from openpyxl import load_workbook

# 打开工作簿【10月考勤统计.xlsx】,获取活动工作表
wb = load_workbook('./material/10月考勤统计.xlsx')
ws = wb.active

# 创建迟到人员字典
info_dict = {}

# 循环读取除表头外的表格数据
for row in ws.iter_rows(min_row=2, values_only=True):
# 取出员工工号
staff_id = row[0]
# 取出迟到次数
staff_late = row[-1]
# 将信息添加入字典,字典格式为{'员工工号': '迟到次数'}
info_dict[staff_id] = staff_late

# 打开工作簿【迟到次数月度统计(10月更新).xlsx】,获取活动工作表
monthly_wb = load_workbook('./material/迟到次数月度统计(10月更新).xlsx')
monthly_ws = monthly_wb.active

# 循环读取出表头外的表格数据
for monthly_row in monthly_ws.iter_rows(min_row=3, max_col=13, values_only=True):
# 取出员工工号
member_id = monthly_row[0]
# 取出十月份的迟到次数
member_late = monthly_row[-1]
# 匹配迟到次数是否相等
if member_late != info_dict[member_id]:
print('工号{}迟到情况不匹配,请核查后更新'.format(member_id))


回复

使用道具 举报

646

主题

799

帖子

2686

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2686
 楼主| 发表于 2021-1-22 10:44:29 | 显示全部楼层
from openpyxl import load_workbook

# 打开工作簿【11月考勤统计.xlsx】,获取活动工作表
wb = load_workbook('./material/11月考勤统计.xlsx')
ws = wb.active

# 创建迟到人员字典
info_dict = {}

# 循环读取除表头外的表格数据
for row in ws.iter_rows(min_row=2, values_only=True):
# 取出员工工号
staff_id = row[0]
# 取出迟到次数
staff_late = row[-1]
# 将信息添加入字典,字典格式为{'员工工号': '迟到次数'}
info_dict[staff_id] = staff_late

# 打开工作簿【迟到次数月度统计(11月更新).xlsx】,获取活动工作表
monthly_wb = load_workbook('./material/迟到次数月度统计(11月更新).xlsx')
monthly_ws = monthly_wb.active

# 循环读取出表头外的表格数据
for monthly_row in monthly_ws.iter_rows(min_row=3, max_col=14, values_only=True):
# 取出员工工号
member_id = monthly_row[0]
# 取出十月份的迟到次数
member_late = monthly_row[-1]
# 匹配迟到次数是否相等
if member_late != info_dict[member_id]:
print('工号{}迟到情况不匹配,请核查后更新'.format(member_id))


回复

使用道具 举报

646

主题

799

帖子

2686

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2686
 楼主| 发表于 2021-1-22 11:30:12 | 显示全部楼层
import os
from openpyxl import load_workbook
from openpyxl.styles import PatternFill, Alignment, Side, Border

# 定义表头颜色样式为橙色
header_fill = PatternFill('solid', fgColor='FF7F24')
# 定义表中、表尾颜色样式为淡黄色
content_fill = PatternFill('solid', fgColor='FFFFE0')
# 定义表尾颜色样式为淡桔红色
bottom_fill = PatternFill('solid', fgColor='EE9572')

# 定义对齐样式横向居中、纵向居中
align = Alignment(horizontal='center', vertical='center')

# 定义边样式为细条
side = Side('thin')
# 定义表头边框样式,有底边和右边
header_border = Border(bottom=side, right=side)
# 定义表中、表尾边框样式,有左边
content_border = Border(left=side)

# 设置文件夹路径
path = './各部门利润表汇总_副本/'
# 返回当前目录下所有文件名
files = os.listdir(path)

# 循环文件名列表
for file in files:
# 拼接文件路径
file_path = path + file
# 打开工作簿
wb = load_workbook(file_path)
# 打开工作表
ws = wb.active

# 调整列宽
ws.column_dimensions['A'].width = 10
ws.column_dimensions['B'].width = 25
ws.column_dimensions['C'].width = 50
ws.column_dimensions['D'].width = 10
ws.column_dimensions['E'].width = 20
ws.column_dimensions['F'].width = 15

# 循环第一行单元格,调整表头样式
for cell in ws[1]:
# 设置单元格填充颜色
cell.fill = header_fill
# 设置单元格对齐方式
cell.alignment = align
# 设置单元格边框
cell.border = header_border

# 获取最后一行行号
row_num = ws.max_row

# 从第二行开始,循环到倒数第二行
for row in ws.iter_rows(min_row=2, max_row=(row_num-1)):
# 循环取出单元格,调整表中样式
for cell in row:
cell.fill = content_fill
cell.alignment = align
cell.border = content_border

# 循环最后一行单元格,调整表尾样式
for cell in ws[row_num]:
cell.fill = bottom_fill
cell.alignment = align
cell.border = content_border

# 保存
wb.save(file_path)


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|21番茄网 ( 粤ICP备10099428号 ) 奇远富

GMT+8, 2024-4-23 16:07 , Processed in 0.371857 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表