Autor | 11haoren
Zebian | Guo Rui
Como você geralmente precisa dividir uma tabela em pastas de trabalho e enviá-las para diferentes objetos após a desmontagem e, em seguida, usar o Outlook para enviar emails, este artigo chama a conta do Outlook para enviar emails como exemplo: divida uma tabela em vários Com base na planilha, o código foi modificado para dividir uma planilha em várias pastas de trabalho. Se você deseja ligar para outras caixas de correio, consulte o link de referência no final do artigo ou pode fazer o mesmo.
Dividir uma tabela em várias tabelas
Este código para desmontar o relógio é o mais conciso que posso encontrar. Primeiro, use o ExcelWriter para gerar uma pasta de trabalho contendo após desmontar a tabela e, em seguida, chame o loop For para percorrer uma coluna, area_list é extraído de uma coluna da tabela, quantos fatores houver nessa coluna e quantas tabelas possíveis, como Pequim, Shenzhen e assim por diante.
Por fim, uma tabela é gerada fazendo um loop por cada fator e gravada na pasta de trabalho criada antes até o final do loop.
Dica: Python é sensível a espaços. Não acredito que você alinhe writer.save com a linha anterior para ver como é o efeito.
(Mesa grande)
(Tabela dividida)
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() # 一定要加上这句代码,“拆好的表”才会显示出来
Referência: https://me.csdn.net/weixin_41261833
Dividir uma tabela em várias pastas de trabalho
A etapa principal da divisão em várias tabelas é como gerar a tabela, você pode usar to_excel (), a analogia está disponível, a etapa principal da divisão em várias pastas de trabalho é como gerar a pasta de trabalho, usando ExcelWriter (), combinado com a travessia, forneça cada fator Você gerou uma pasta de trabalho e a gravou na pasta?
Não, cada pasta de trabalho não pode ser renomeada; portanto, você também precisa nomear o arquivo com variáveis. F 'pode fazer com que as funções em {} entrem em vigor.
Você encontrou a diferença entre writer.save e a anterior?
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()
Envie e copie para várias pessoas separadamente
Crie um índice de anexos e destinatários usando a variável j nomeada para o arquivo antes e indexe na linha da coluna "Varejo" na coluna "loja" do destinatário igual a j.
Por fim, crie funções para enviar emails, incluindo destinatários, ccs, anexos, texto etc. Todo o processo de divisão para emails não excede 1 minuto.
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 = '''
<H2>Hello, This is a test mail.</H2>
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')
Sucesso!
Referência: https://blog.csdn.net/qq_20417499/article/details/80566265
Link da fonte: https://github.com/11haoren/Email
Isenção de responsabilidade: este artigo é enviado pelo autor e os direitos autorais pertencem a ele.
【FIM】
Recomendações mais interessantes
IdeaA ideia de transporte inteligente causada pelo engarrafamento da quarta via circular de Pequim
☞ Por favor, não me pergunte qual é a pilha!
IdeaA ideia de transporte inteligente causada pelo engarrafamento da quarta via circular de Pequim
WebDe Web1.0 a Web3.0: análise detalhada do desenvolvimento e direção futura da Internet nesses anos
Todo "assistindo" você pede, eu levo isso a sério