使用Python3

时间:2016-10-22 13:48:02

标签: python excel list email openpyxl

我是一个编程新手,我的一半问题是我找不到合适的问题要问 - 我已经看了很多Stack Overflow帖子试图解决我的问题,但是我没能做到应用我发现的情况。因此,我需要你的帮助,互联网。

我正在尝试使用Windows Scheduler创建一个每周运行一次的程序。当它运行时,它应该:

  • 咨询excel文件,
  • 从最后四十行中提取一些信息,
  • 起草一份表单电子邮件,
  • 在电子邮件中包含提取的信息,
  • 将表单电子邮件发送给特定收件人。

我已经 SMTP 工作正常,包括表单电子邮件生成器,我可以使用 openpyxl 从excel表中获取统计信息,但我无法摔跤将信息转换为可用的格式发送。

到目前为止我已经获得的代码(用于处理该信息)如下所示:

# Open stats sheet
wb = openpyxl.load_workbook('Stats.xlsx')
sheet = wb.get_sheet_by_name('DATA')

# Get the author, title and price of last forty sales
ultimateRow = sheet.max_row + 1
limitRow = sheet.max_row - 40
recentList = []
for row in range(limitRow, ultimateRow):
    recentSales = []
    for column in 'GHI':
        cell_name = '{}{}'.format(column, row)
        recentSales.append(sheet[cell_name].value)
    recentList.append(recentSales)

print(*recentList)

我从中得到的是一大堆文字,如下:

  

['DEIGHTON,Len(生于1929年)。','Twinkle Twinkle Little Spy。',20] ['BROOKE,Rupert(1887-1915); ABERCROMBIE,Lascelles(1881-1938); DRINKWATER,约翰(1882-1937); GIBSON,Wilfrid Wilson(1878-1962)。','New Numbers Volume 1 Number 3.',76] ['SHUTE,Nevil。','A Town Like Alice。',100] ['SWINBURNE,Algernon Charles(1837) -1909)。','意大利之歌。',15]

理想情况下,我希望通过电子邮件发送的内容如下所示,每个销售项目都有一个新行:

  

DEIGHTON,Len(生于1929年)。 - Twinkle Twinkle Little Spy.- 20

     

布鲁克,鲁珀特(1887-1915); ABERCROMBIE,Lascelles(1881-1938); DRINKWATER,约翰(1882-1937); GIBSON,Wilfrid Wilson(1878-1962) - 新号码第1卷第3期 - 76

我写了一个电子邮件正文,其设置包含使用以下格式的信息列表:

body = ''' This is an email. Here's the list: {}'''.format(list)

任何关于上面无疑可怕的代码的指针都会感激不尽。

3 个答案:

答案 0 :(得分:0)

for ls in recentList:
    line = " - ".join([str(x) for x in ls])
    print(line + "\n")

https://www.diffchecker.com/EEJcuu1W

答案 1 :(得分:0)

正如其他人所说,使用加入。

你可以代替 [1, 2, 3] class ArrayList1_groovyProxy 做类似的事情: recentList.append(recentSales) 这将导致recentList.append(' '.join([str(x) for x in recentSales)中格式良好的字符串列表。

生成您的电子邮件正文的行可能是:

recentList

答案 2 :(得分:-1)

我相信这样的事情会产生你需要的东西。

for ls in recentList:
    line = " ".join([str(x) for x in ls])
    print(line + "\n")