如何用Python的Pandas修改Excel:邮件发送后更新客户状态
如何用Pandas更新Excel文件中的客户邮件状态
完全可以用Pandas实现这个需求,核心思路是读取Excel到DataFrame,在邮件发送完成后更新对应行的状态,再将DataFrame写回原文件(或指定文件),确保原有数据不丢失。
具体实现步骤
- 读取Excel文件:用
pd.read_excel()把目标Excel文件加载到DataFrame中。 - 更新状态:在邮件发送成功的代码块内,修改DataFrame对应行的状态列(比如你的
Acceptance status)为已发送标记,例如"已跟进"。 - 保存文件:用
df.to_excel()将更新后的DataFrame写回原文件,可选指定引擎保留Excel原有格式。
修改后的代码示例
结合你提供的自动化邮件代码,加入状态更新和保存逻辑:
import pandas as pd import subprocess import time import pyautogui # 假设你的常量定义在这里:NO_FOLLOWUP, MAIL_SUBJECT, MAIL_BODY, BD_FRESH_MAIL, CC等 # 1. 读取Excel文件到DataFrame df = pd.read_excel("你的文件路径.xlsx") DAYS_COUNT = df['Days \ncount'].tolist() subprocess.Popen('C:\Program Files (x86)\Microsoft Office\Office15\OUTLOOK') time.sleep(10) for i in range(0, len(DAYS_COUNT)): if df['Acceptance status'][i] in NO_FOLLOWUP: continue # 用continue代替pass逻辑更清晰 if df['Days \ncount'][i] >= 7 and df['Platform'][i] == "Email": time.sleep(3) print(df['Company Name/ \nEmail Address'][i]) send_to = df['Company Name/ \nEmail Address'][i] # --- 原邮件发送代码 --- pyautogui.click(x=25, y=244) # sent_click time.sleep(1) pyautogui.click(x=118, y=158) # search_sent_click time.sleep(1) pyautogui.click(x=286, y=74) # search_by_to_click time.sleep(1) pyautogui.write(df['Company Name/ \nEmail Address'][i]) time.sleep(2) pyautogui.click(x=186, y=276) # first_item_click time.sleep(1) pyautogui.click(x=639, y=162) # forward_click time.sleep(1) pyautogui.write(f"{send_to};") # to_address time.sleep(5) pyautogui.press("tab") pyautogui.write(f"{CC};") # cc_address time.sleep(5) pyautogui.press("tab") pyautogui.tripleClick(x=607, y=252) # subject_line_remove_existing subject_status = df['Acceptance status'][i].lower() pyautogui.write(MAIL_SUBJECT[subject_status]) # subject time.sleep(5) pyautogui.press("tab") pyautogui.press("tab") mail_body_status = df['Acceptance status'][i].lower() if df['Remarks'][i] == "economic times": pyautogui.write(BD_FRESH_MAIL['economic_mail_body']) else: pyautogui.write(MAIL_BODY[mail_body_status]) # mail_body time.sleep(5) pyautogui.click(x=489, y=205) # send_click time.sleep(1) # --- 邮件发送代码结束 --- # 2. 更新当前行的状态 df.loc[i, 'Acceptance status'] = "已跟进" # 替换为你需要的状态值 # 3. 保存更新后的DataFrame回Excel文件 # 若需保留原有格式,需提前安装openpyxl:pip install openpyxl df.to_excel("你的文件路径.xlsx", index=False, engine='openpyxl')
注意事项
- 文件路径:确保读取和保存的文件路径一致,也可先保存到临时文件验证后再覆盖原文件,避免数据丢失。
- 格式保留:Pandas默认保存可能丢失Excel原有格式(如单元格样式、公式),使用
openpyxl引擎可部分保留,复杂格式需求建议用xlwings库。 - 异常处理:建议给邮件发送逻辑加
try-except块,仅在邮件确认发送成功后更新状态,避免误操作。
内容的提问来源于stack exchange,提问作者Varadhan E
相关产品推荐
相关产品推荐

