From 68bd51503061ed50a0ab7d50c0b4f553b604014e Mon Sep 17 00:00:00 2001 From: mxr612 Date: Mon, 2 Jun 2025 23:00:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=9D=E5=AD=98=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95=E6=95=B0=E6=8D=AE=E5=88=B0?= =?UTF-8?q?excel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改历史记录DataFrame的列名,确保与职务和工资相关字段一致 - 添加一个空的DataFrame以存储所有人员的历史记录 - 在处理每个人员的历史记录时,将其添加到总表中并保存到Excel文件 - 记录所有人员历史记录的保存状态 --- main.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index a694fc2..d5a981c 100644 --- a/main.py +++ b/main.py @@ -181,9 +181,9 @@ def fill_history_info(ws, History_pd):# 填充历史记录 except: logging.warning(f"历史时间格式错误:{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=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=7, value=hrow["变动原因"]) # 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_Prom"] = None +# 创建一个空的DataFrame来存储所有历史记录 +all_history = pd.DataFrame(columns=["身份证号码", "姓名", "时间", "职务", "职务工资", "级别档次", "级别工资", "工资合计", "变动原因"]) + for index, row in BaseData.iterrows(): try: logging.info(f"台账:第[{index+1}]共[{BaseData.shape[0]}]现在是[{row['身份证号码']}]") @@ -218,7 +221,7 @@ for index, row in BaseData.iterrows(): 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["入职时的初始级别"], "", "", "套改/定级"] for index, prow in promote.iterrows(): # 添加晋升记录 @@ -269,15 +272,25 @@ for index, row in BaseData.iterrows(): else: 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, "工资额2"] = 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, "职务工资"] = role_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]["职务工资"]) + to_int(History_pd.iloc[index]["级别工资"]) 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") except Exception as e: logging.error(f"{row['身份证号码']}:{e}") +# 保存所有历史记录到Excel文件 +all_history.to_excel("所有人员历史记录.xlsx", index=False) +logging.info("所有人员历史记录已保存到'所有人员历史记录.xlsx'") + wb = load_workbook("模板/汇总名册.xlsx") ws = wb.active for index, row in BaseData.iterrows(): # 汇总