feat: 保存更新历史记录数据到excel

- 修改历史记录DataFrame的列名,确保与职务和工资相关字段一致
- 添加一个空的DataFrame以存储所有人员的历史记录
- 在处理每个人员的历史记录时,将其添加到总表中并保存到Excel文件
- 记录所有人员历史记录的保存状态
This commit is contained in:
Miu Li 2025-06-02 23:00:55 +08:00
parent 027ae0d108
commit 68bd515030

25
main.py
View File

@ -181,9 +181,9 @@ def fill_history_info(ws, History_pd):# 填充历史记录
except: except:
logging.warning(f"历史时间格式错误:{hrow['时间']}") logging.warning(f"历史时间格式错误:{hrow['时间']}")
ws.cell(row=H_START+index, column=2, value=hrow["职务"]) ws.cell(row=H_START+index, column=2, value=hrow["职务"])
ws.cell(row=H_START+index, column=3, value=hrow["工资额1"]) ws.cell(row=H_START+index, column=3, value=hrow["职务工资"])
ws.cell(row=H_START+index, column=4, value=hrow["级别档次"]) ws.cell(row=H_START+index, column=4, value=hrow["级别档次"])
ws.cell(row=H_START+index, column=5, value=hrow["工资额2"]) ws.cell(row=H_START+index, column=5, value=hrow["级别工资"])
ws.cell(row=H_START+index, column=6, value=hrow["工资合计"]) ws.cell(row=H_START+index, column=6, value=hrow["工资合计"])
ws.cell(row=H_START+index, column=7, value=hrow["变动原因"]) ws.cell(row=H_START+index, column=7, value=hrow["变动原因"])
# ws.cell(row=H_START+index, column=8, value=index) # Debug # ws.cell(row=H_START+index, column=8, value=index) # Debug
@ -191,6 +191,9 @@ def fill_history_info(ws, History_pd):# 填充历史记录
BaseData["Latest_Role"] = None BaseData["Latest_Role"] = None
BaseData["Latest_Prom"] = None BaseData["Latest_Prom"] = None
# 创建一个空的DataFrame来存储所有历史记录
all_history = pd.DataFrame(columns=["身份证号码", "姓名", "时间", "职务", "职务工资", "级别档次", "级别工资", "工资合计", "变动原因"])
for index, row in BaseData.iterrows(): for index, row in BaseData.iterrows():
try: try:
logging.info(f"台账:第[{index+1}]共[{BaseData.shape[0]}]现在是[{row['身份证号码']}]") logging.info(f"台账:第[{index+1}]共[{BaseData.shape[0]}]现在是[{row['身份证号码']}]")
@ -218,7 +221,7 @@ for index, row in BaseData.iterrows():
fill_prompt_info(ws, promote)# 填充晋升信息 fill_prompt_info(ws, promote)# 填充晋升信息
# 根据规则匹配职级薪资 # 根据规则匹配职级薪资
History_pd = pd.DataFrame(columns=["时间", "职务", "工资额1", "级别档次", "工资额2", "工资合计", "变动原因"]) History_pd = pd.DataFrame(columns=["时间", "职务", "职务工资", "级别档次", "级别工资", "工资合计", "变动原因"])
# 添加入职记录 # 添加入职记录
History_pd.loc[len(History_pd)] = [row["入职时间"], row["初始职务"], "", row["入职时的初始级别"], "", "", "套改/定级"] History_pd.loc[len(History_pd)] = [row["入职时间"], row["初始职务"], "", row["入职时的初始级别"], "", "", "套改/定级"]
for index, prow in promote.iterrows(): # 添加晋升记录 for index, prow in promote.iterrows(): # 添加晋升记录
@ -269,15 +272,25 @@ for index, row in BaseData.iterrows():
else: else:
History_pd.at[index, "级别档次"] = f"{jb-1}-{dc-1}" History_pd.at[index, "级别档次"] = f"{jb-1}-{dc-1}"
# 计算工资 # 计算工资
History_pd.at[index, "工资额1"] = role_salary(History_pd.iloc[index]["职务"], hrow["时间"]) History_pd.at[index, "职务工资"] = role_salary(History_pd.iloc[index]["职务"], hrow["时间"])
History_pd.at[index, "工资额2"] = level_salary(History_pd.iloc[index]["级别档次"], hrow["时间"]) History_pd.at[index, "级别工资"] = level_salary(History_pd.iloc[index]["级别档次"], hrow["时间"])
History_pd.at[index, "工资合计"] = to_int(History_pd.iloc[index]["工资额1"]) + to_int(History_pd.iloc[index]["工资额2"]) History_pd.at[index, "工资合计"] = to_int(History_pd.iloc[index]["职务工资"]) + to_int(History_pd.iloc[index]["级别工资"])
fill_history_info(ws, History_pd)# 填充历史记录 fill_history_info(ws, History_pd)# 填充历史记录
# 将当前人员的历史记录添加到总表中
History_pd["身份证号码"] = row["身份证号码"]
History_pd["姓名"] = row["姓名"]
all_history = pd.concat([all_history, History_pd], ignore_index=True)
wb.save(f"个人台账/{row['身份证号码']}_{row['姓名']}.xlsx") wb.save(f"个人台账/{row['身份证号码']}_{row['姓名']}.xlsx")
except Exception as e: except Exception as e:
logging.error(f"{row['身份证号码']}:{e}") logging.error(f"{row['身份证号码']}:{e}")
# 保存所有历史记录到Excel文件
all_history.to_excel("所有人员历史记录.xlsx", index=False)
logging.info("所有人员历史记录已保存到'所有人员历史记录.xlsx'")
wb = load_workbook("模板/汇总名册.xlsx") wb = load_workbook("模板/汇总名册.xlsx")
ws = wb.active ws = wb.active
for index, row in BaseData.iterrows(): # 汇总 for index, row in BaseData.iterrows(): # 汇总