热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python拆分表格并发送邮件

所需表格----- 点击下载 一.表拆成多个表这个拆表代码是我能找到的最简洁的了。首先用ExcelWriter生成一个拆完表后的容纳工作簿,然后调用了For循环对某一列进行遍历

所需表格 -----  点击下载

 


一 . 表拆成多个表

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

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

import pandas as pd
import xlsxwriter
import xlrd
data
= pd.read_excel(r"C:\Users\PycharmProjects\拆分自动邮件发送\chaifen.xlsx", encoding='gbk')
area_list
= list(set(data['店铺']))
writer
= pd.ExcelWriter(r"C:\Users\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


二 . 表拆成多个工作簿

  拆成多个表的关键步骤在于怎么生成表,可以用to_excel(),类比可得,拆成多个工作簿的关键步骤在于怎么生成工作簿,用ExcelWriter(),结合遍历,给每个因子都生成一个工作簿,并写入文件夹就完成了吗?不,每个工作簿不能重名,因此还需要用变量的方式给文件进行命名,f'能让{}内的功能生效。

  发现此处的writer.save和上一个的差别了吗?

data = pd.read_excel(r"C:\Users\PycharmProjects\拆分自动邮件发送\chaifen.xlsx", 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()

三 . 分别发送和抄送给多个人

  建一个附件和收件人的索引,用之前给文件命名的变量j ,索引到收件人'Rec'列中'店铺'列等于 j的行。最后构建邮件发送的函数,包括收件人、抄送人、附件、正文等,从拆分到邮件整个过程不超过1分钟。

import pandas as pd
import xlrd
data
= pd.read_excel(r"C:\Users\PycharmProjects\拆分自动邮件发送\chaifen.xlsx", encoding='gbk')
data2
= pd.read_excel(r"C:\Users\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:\Users\PycharmProjects\拆分自动邮件发送'+f'\{str( j )} 拆分自动邮件发送.xlsx', 1, 1, f'{str( j )} 拆分自动邮件发送.xls')
mail_item.Send()
if __name__ == '__main__':
send_mail()
print('success')

 

原文链接 ; https://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650742713&idx=2&sn=e7e5c5fd3794c6f93ab112434114a9bc&chksm=bea76e6a89d0e77cbe70bd09f9b455f3a34f18e17136f4043fc9890f1e117bfc436f2ca2f93a&mpshare=1&scene=1&srcid=04152nEufQSUDfaULnBrUCvW&sharer_sharetime=1586916858293&sharer_shareid=b248fd1759cdfc201f7f4329f968c95d&key=2c650c6403245066dcd586f3a4377140303c23e77e5a9a8051cd15823fd6bea2a1f989917c8ecb714c10980c862917f4d0dc822456303eaf558cebfe3f09c09a65bb7074caa1a262181472edd3c63e8e&ascene=1&uin=MjA3MDY3NjY0Mg%3D%3D&devicetype=Windows+10&version=62080079&lang=zh_CN&exportkey=AWShgqkyKf85Z%2Bl4wKI9SNk%3D&pass_ticket=3AWrGSmsdMTUVZbRP0B6BNjimth5t6rxSv%2FP0jl2VWNJBKs%2BtAOuUMYGZMkCtXme

 



推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 代理模式的详细介绍及应用场景
    代理模式是一种在软件开发中常用的设计模式,通过在客户端和目标对象之间增加一层中间层,让代理对象代替目标对象进行访问,从而简化系统的复杂性。代理模式可以根据不同的使用目的分为远程代理、虚拟代理、Copy-on-Write代理、保护代理、防火墙代理、智能引用代理和Cache代理等几种。本文将详细介绍代理模式的原理和应用场景。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • SAP羞辱国产软件商:技术停在10年前
    SAP中国研究院总裁芮祥麟表示,国产软件厂商过于热衷概念炒作,技术水平停留在10年前的客户端架构水平。他认为,国内厂商推出基于SOA的产品或转型SAAS模式是不可能的,研发新架构需要时间。当前最热门的概念是云计算,芮祥麟呼吁国产厂商应该潜心研发底层架构。 ... [详细]
  • 本文介绍了在Python中使用getpass模块隐藏密码输入的方法,以保护用户的密码不被其他人员看到。同时还提到了在PyCharm中运行该命令无效的问题,需要在terminal中运行。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
author-avatar
菜蔸蔸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有