前言
之前写了一篇【群发微信群消息】的blog,符合当时的工作需求.
为了贴合最近的实际工作,减少重复工作,进行了进一步优化;
一、需求讲述
简单来说:我首先需要对原有excel复杂数据,进行处理;
- 1.1)相同B/L的数据去重:并保存在一个新excel的Sheet1中
- 1.2)去重后的数据处理:
- 同一 Client 的数据,单独存储在一个Sheet;sheet_name为当前客户名称;
- 1.3)数据处理完毕后
- 将客户的数据拼接成一个msg,并自动给【客户微信/微信群】发送
1、测试数据excel设计
测试数据设计思路
- index 从0开始
- 同个Client :存在多条B/L相同的数据,及不同B/L的数据 & 排序不在一起
- 不同Client :存在多条数据
- 某一Client :只存在一条数据
2、效果如下
- ps:如果你问我为什么要先把excel的原数据,这样去处理完…
因为我是先写了发送消息方法,然后发现单独直接拿excel里面的list集合去进行各种操作,越写越复杂,且一测试各种情况都覆盖不到; - 可能当时脑子坑了,最后想想,发送消息已经写通了,那直接把excel处理成,不出错的数据就好,更简单明了;
二、代码
# -*- codeing = utf-8 -*-
# @time: 2025/1/11 15:1
# @Author : Mikasa
import itchat
from wxauto import *
import pandas as pd
# import schedule
# import turtle
def get_wechat_session():
"""
获取PC已登录微信的会话
:return:
"""
# 获取当前微信客户端
wx = WeChat()
# 获取会话列表
wx.GetSessionList()
return wx
def remove_excel_duplicates(file_path, sheet_name, drop_value, new_excel_name):
"""
根据条件去除excel重复行
:param file_path:
:param sheet_name:
:param drop_value: 筛选条件:按B/L去重
:param new_excel_name: 去重后的新excel名称
:return:
"""
pd.read_excel(file_path, sheet_name=sheet_name)
data = pd.DataFrame(pd.read_excel(file_path, sheet_name))
remove_re_row = data.drop_duplicates([drop_value], keep='first')
df_unique = remove_re_row.reset_index(drop=True) # true重置索引
df_unique.to_excel(new_e