gpt4 book ai didi

excel - 无法使用 python 将 Excel 文件附加到电子邮件 - TypeError : expected bytes-like object, not Workbook

转载 作者:行者123 更新时间:2023-12-04 11:00:58 24 4
gpt4 key购买 nike

我正在研究 python 代码,它将在 excel 文件中添加一个字符串并将该文件附加到电子邮件中。我正在使用 AWS SES 发送这封电子邮件。

当我尝试运行我的代码时,它给了我以下错误-

TypeError: expected bytes-like object, not Workbook

下面是我的代码-
import boto3
import xlsxwriter
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart


def lambda_handler(event, context):
client = boto3.client('ses',region_name=AWS_REGION)
sender = "xxx@gmail.com"
to = "aaa@gmail.com"
workbook = xlsxwriter.Workbook('abc.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write('A1', 'Hello..')
#send email with attachment
msg = MIMEMultipart()
msg['Subject'] = 'Test Email'
msg['From'] = sender
msg['To'] = to
body_text = MIMEText(BODY_TEXT, "html")
attachment = MIMEApplication(workbook)
attachment.add_header('Content-Disposition', 'attachment', filename='Expenses01.xlsx')
msg.attach(attachment)
msg.attach(body_text)
response = client.send_raw_email(
Source=sender,
Destinations=[to],
RawMessage={"Data": msg.as_string()}

)

我知道工作簿对象有问题。但我不知道如何解决这个问题。有人可以帮我吗?

最佳答案

阅读 XLSXWriter 文档后,我找到了答案。链接 - https://xlsxwriter.readthedocs.io/workbook.html

我发布这个答案,以便它可以帮助像我这样的其他新 python 开发人员。
较早的 MIMEApplication() 不接受工作簿对象,因此我们需要对其进行转换。我已经更新了我的代码。我使用 BytesIO 创建了 Workbook 对象,然后将该对象添加到 MIMEApplication()。此示例将创建 excel 文件并将该文件附加到电子邮件中。
新代码——

from io import BytesIO
output = BytesIO()
workbook = xlsxwriter.Workbook(output)
worksheet = workbook.add_worksheet()
worksheet.write('A1', 'Hello..')
attachment = MIMEApplication(output.getvalue())
attachment.add_header('Content-Disposition', 'attachment', filename='abc.xlsx')
attachment.add_header('Content-Type', 'application/vnd.ms-excel; charset=UTF-8')

关于excel - 无法使用 python 将 Excel 文件附加到电子邮件 - TypeError : expected bytes-like object, not Workbook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58803820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com