Como dividir a tabela e enviar email com o Python?

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

PlatformUma plataforma de desenvolvimento de IA assassina está aqui! Diga adeus à troca de ferramentas de modelagem dispersa

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

MachineA máquina virtual da sua empresa ainda está ociosa? Aprenda sobre as práticas de teste de integração contínua baseadas em Jenkins e Kubernetes!

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

Artigos publicados em 1958 · mais de 40.000 elogios · 18,17 milhões de visualizações

Acho que você gosta

Origin blog.csdn.net/csdnnews/article/details/105548962
Recomendado
Clasificación