使用xlwt创建文件并在Django应用程序中发送电子邮件

Nam*_*gal 0 python django

我已经使用xlwt创建了一个工作簿,现在我想知道是否可以使用此工作簿发送电子邮件,但是没有将工作簿保存在磁盘上.我无法正确实施,我可以将其作为附件发送而不会暂时保存在磁盘上.以下是电子邮件作为附件的代码.

file_name = "temp_file_location.xlsx"
book = xlwt.Workbook()
sheet = book.add_sheet("XYZ")
book.save(file_name)

message = EmailMessage(subject="Subject", body="body",
             from_email="random@gmail.com", 
             to=email_list)
message.attach_file(file_name)
message.send()
Run Code Online (Sandbox Code Playgroud)

这里有一个类似的问题: 如何发送带附件的电子邮件?

但没有解决方案,我无法发送电子邮件而不将其暂时保存在磁盘上.

有任何想法吗?

小智 6

您可以使用StringIO在内存中编写工作簿:

import StringIO
f = StringIO.StringIO() # create a file-like object 
book = xlwt.Workbook()
sheet = book.add_sheet("XYZ")
book.save(f)

message = EmailMessage(subject="Subject", body="body",
         from_email="random@gmail.com", 
         to=email_list)
message.attach('filename.xlsx', f.getvalue(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") #get the stream and set the correct mimetype
message.send()
Run Code Online (Sandbox Code Playgroud)

取自xlwt即时写出excel表