使用Openpyxl按唯一列值拆分Excel工作表

时间:2019-07-25 02:32:17

标签: python excel openpyxl

我正在尝试根据每个唯一的电子邮件地址值将在同一列中具有多个电子邮件地址的Excel电子表格分离到单独的工作簿中。

我的目的是将具有相同电子邮件地址值的每组行复制并粘贴到单独的工作簿中,然后我可以将其附加到电子邮件中,并作为Excel附件发送给新工作簿中的每个对应收件人。

到目前为止,我只能将特定值的行复制并粘贴到新工作簿中,然后将该文件发送到特定单元格位置的电子邮件地址,在本例中为“ O2”。

import openpyxl

wb1 = openpyxl.load_workbook(r'file.xlsx', data_only=True)
wb2 = openpyxl.Workbook()
sheet1 = wb1['Sheet1']
sheet2 = wb2['Sheet2']


header = sheet[1:1]
listH =[]
for h in header:
    listH.append(h.value)
sheet2.append(listH)


colOfInterest= 15 # This is the column which contains the email addresses
for rowNum in range(2, sheet1.max_row +1):
    if sheet1.cell(row=rowNum, column=colOfInterest).value is not None: 
        listA = []
        row = sheet1[rowNum:rowNum] 
        for cell in row:
            listA.append(cell.value) 
        if listA[15]  == "email@domainname.com":
            sheet2.append(listA)


wb1.save('TestList1.xlsx')


import win32com.client as win32

outlook = win32.Dispatch("outlook.application")

mail = outlook.CreateItem(0)

mail.To = (str(sheet1['O2'].value))

mail.Cc = (str(sheet1['P2'].value))

mail.Subject = "Subject Line Goes Here"

mail.Body = ""

mail.HTMLBody = """ Email content goes here."""

attachment1  = "List1.xlsx"
mail.Attachments.Add(attachment1)

mail.Send()

上面列出的代码仅适用于特定的电子邮件地址值。我还没有弄清楚如何让python遍历整个原始电子表格为每个唯一的电子邮件地址值创建单独的Excel附件,并将其通过电子邮件发送给适当的收件人。

在此先感谢您提供的任何帮助!

0 个答案:

没有答案