表格某一列不固定其余全固定_如何利用Python一键拆分表格并进行邮件发送~

因为平时经常要将 一张表 拆成工作簿,拆完还要发给不同的对象,工作又使用outlook发邮件,所以本文调用outlook账号进行邮件的发送作为示例:在 一张表拆成多个sheet的基础上,修改了代码,可实现一表拆成多个工作簿。 如果想调用其他邮箱可参见文末参考链接,你也可以举一反三。

一表拆成多个表

这个拆表代码是我能找到的最简洁的了。首先用 ExcelWriter 生成一个拆完表后的容纳工作簿,然后调用了 For 循环对某一列进行遍历,area_list 取自表格的某一列,这一列有多少种因子,就拆成多少个表,例如北京、深圳等等。

最后通过循环每一个因子生成一个表,写入之前建好的工作簿中直至循环结束。

小提示:python对空格敏感,不信你把writer.save和上一行对齐看看效果是什么样的。

1acf1826d880522179fdb6865cea4446.png

(大表)

4b8c0701ee6c6921377c74f87a4cba6f.png

(拆分表)

import pandas as pdimport xlsxwriterimport xlrddata = pd.read_excel(r"C:甥敳獲PycharmProjects拆分自动邮件发送chaifen.xlsx", encoding='gbk')area_list = list(set(data['店铺']))writer = pd.ExcelWriter(r"C:甥敳獲PycharmProjects拆分自动邮件发送拆好的表1.xlsx", engine='xlsxwriter')data.to_excel(writer, sheet_name="总表", index=False)# 遍历for j in area_list:    df = data[data['店铺'] == j]    df.to_excel(writer, sheet_name=j, index=False)writer.save()  # 一定要加上这句代码,“拆好的表”才会显示出来

参考:https://me.csdn.net/weixin_41261833

一表拆成多个表

这个拆表代码是我能找到的最简洁的了。首先用 ExcelWriter 生成一个拆完表后的容纳工作簿,然后调用了 For 循环对某一列进行遍历,area_list 取自表格的某一列,这一列有多少种因子,就拆成多少个表,例如北京、深圳等等。

最后通过循环每一个因子生成一个表,写入之前建好的工作簿中直至循环结束。

小提示:python对空格敏感,不信你把writer.save和上一行对齐看看效果是什么样的。

38cd4a171f020db621d794b8c9e1550a.png

(大表)

d2ba332e32b3c4b33c0de1b9e091314e.png

(拆分表)

import pandas as pdimport xlsxwriterimport xlrddata = pd.read_excel(r"C:甥敳獲PycharmProjects拆分自动邮件发送chaifen.xlsx", encoding='gbk')area_list = list(set(data['店铺']))writer = pd.ExcelWriter(r"C:甥敳獲PycharmProjects拆分自动邮件发送拆好的表1.xlsx", engine='xlsxwriter')data.to_excel(writer, sheet_name="总表", index=False)# 遍历for j in area_list:    df = data[data['店铺'] == j]    df.to_excel(writer, sheet_name=j, index=False)writer.save()  # 一定要加上这句代码,“拆好的表”才会显示出来

参考:https://me.csdn.net/weixin_41261833

分别发送和抄送给多个人

建一个附件和收件人的索引,用之前给文件命名的变量j ,索引到收件人'Rec'列中'店铺'列等于 j的行。

最后构建邮件发送的函数,包括收件人、抄送人、附件、正文等,从拆分到邮件整个过程不超过1分钟。

86b7493f31a0d2bf4d2a1f69d9921237.png
import pandas as pdimport xlrddata = pd.read_excel(r"C:甥敳獲PycharmProjects拆分自动邮件发送chaifen.xlsx", encoding='gbk')data2 = pd.read_excel(r"C:甥敳獲PycharmProjects拆分自动邮件发送邮件人员清单清单.xlsx", converters={'dep2':str, 'Rec':str, 'Cc':str},encoding='gbk')area_list = list(set(data['店铺']))# 遍历for j in area_list:    df = data[data['店铺'] == j]    writer = pd.ExcelWriter(f'{str( j )} 拆分自动邮件发送.xlsx', engine='xlsxwriter')    df.to_excel(writer, sheet_name=j, index=False)    writer.save()  # 一定要加上这句代码,“拆好的表”才会显示出来for j in area_list:    def send_mail():        outlook = win32.Dispatch('Outlook.Application') # 固定写法        mail_item = outlook.CreateItem(0) # 0: olMailItem        mail_item.to = list(data2['Rec'][data2['店铺'] == j])[0] #收件人        mail_item.cc = list(data2['Cc'][data2['店铺'] == j]) [0] #抄送人        # mail.Recipients.Add(addressee)        mail_item.Subject = 'Mail Test5'+'you are the best'        mail_item.BodyFormat = 2          # 2: Html format        mail_item.HTMLBody  = '''            

Hello, This is a test mail.

Hello Guys. Do you want to come with us? ''' mail_item.Attachments.Add(r'C:甥敳獲PycharmProjects拆分自动邮件发送'+f'{str( j )} 拆分自动邮件发送.xlsx', 1, 1, f'{str( j )} 拆分自动邮件发送.xls') mail_item.Send() if __name__ == '__main__': send_mail() print('success')
00880d0ef4a4411dbb2a6585812d57e6.png

源码私信小编01获取哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值