1-1
读取单元格的数据,原样写入,其他已有的工作簿,属于“单元格读写”模式
获取个人工资信息
# 从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')
1-2
按行读写,取出所需数据范围后,按行使用数据,原样写入工作表中
生成前10行绩效信息表
# 从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('./material/员工绩效表-模板.xlsx')
注:
不填values_only=True
时,默认values_only参数为False,即不是“只取单元格的值”,而是取出单元格对象。此时row元组的元素是单元格对象
使用Workbook()
方法创建一个工作簿对象new_wb。
同样再用工作簿对象.active
获取其活动工作表new_ws。
它的模式是按行读写,即取出所需数据范围后,按行使用数据,原样写入工作表中
1-3
对获取的数据进行处理使用,从每行数据选取需要的单元格值,并进行加法运算。
计算并打印奖金信息
# 从openpyxl库导入load_workbook和Workbook
from openpyxl import load_workbook, Workbook
# 打开【10月员工绩效表.xlsx】工作簿
performance_wb = load_workbook('./material/10月员工绩效表.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))
1-4
创建薪资信息字典
# 从openpyxl库导入load_workbook函数
from openpyxl import load_workbook
# 打开【10月员工绩效表.xlsx】工作簿
performance_wb = load_workbook('./material/10月员工绩效表.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)
1-5
取数汇总并写入
【目的】:获取【江宇工资信息表】中10月的绩效、提成、基本工资,计算出总和,写入到【江宇工资信息表】并保存。
【江宇工资信息表-相对路径】:./material/江宇工资信息表.xlsx
# 导入模块
from openpyxl import load_workbook
# 获取数据
wb = load_workbook('./material/江宇工资信息表.xlsx')
ws = wb['Sheet1']
performance = ws['E11'].value
bonus = ws['F11'].value
base = ws['G11'].value
# 使用数据
salary = performance + bonus + base
# 输出结果
ws['H1'].value = '总工资'
ws['H11'].value = salary
wb.save('./material/江宇工资信息表.xlsx')
相关链接:
https://www.cnblogs.com/azxsdcv/p/14097765.html
20201207-2 openpyxl 库与模块导入 - Malakh - 博客园 (cnblogs.com)