gpt4 book ai didi

python - 在 Outlook 中从 Excel 附件创建数据框

转载 作者:行者123 更新时间:2023-12-04 19:55:54 39 4
gpt4 key购买 nike

是否可以从 Outlook 附件中读取 Excel 文件而不保存它,并从附件中返回 pandas 数据框?该文件将始终采用相同的格式。

最佳答案

您可以使用exchangelib连接 Outlook 并搜索附件。

一旦找到,就可以提取附件内容。这将是字节字符串形式的 Excel 文件。

pandas.read_excel方法可用于将 Excel 文件读入数据框。如果您提供类似文件的对象作为参数,则此方法能够读取内存中的 Excel 文件。

*PS pandas 可能不会指定 xlrd 库作为依赖项,您可能需要单独安装 xlrd 才能利用 pandas.read_excel.*

要将附件内容(字节字符串)转换为类似文件的对象,可以将字节字符串传递给 io.BytesIO

我通过电子邮件给自己发送了一个名为 file.xls 的文件,其中电子邮件主题为您期望的电子邮件主题,从而实现了此功能。也许您可以适应您的需求:

import io
from exchangelib import Credentials, Account, DELEGATE
import pandas

# Connect to outlook (many ways to do this, take a look at exchangelib link above)
credentials = Credentials('MYWINDOMAIN\\myusername', 'mypassword')
account = Account(
primary_smtp_address='<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="117c68646274637f707c74517469707c617d743f727e7c" rel="noreferrer noopener nofollow">[email protected]</a>',
config=config,
autodiscover=True,
access_type=DELEGATE
)

# Find the items in the inbox matching the email subject you specify
item = account.inbox.all().get(subject='the email subject you are expecting')

# Iterate through the attachments and match with the filename you specify
# The attachment content will be the excel file in the form of a byte string
for attachment in item.attachments:
if attachment.name == 'file.xlsx':
my_excel_file_in_bytes = attachment.content
break
else:
assert False, 'No attachment with that name'

# Now that you have the excel file in bytes, convert to a file-like
# object and read the excel file in memory
my_excel_file_io = io.BytesIO(my_excel_file_in_bytes)
pandas_data_frame = pandas.read_excel(io=my_excel_file_io)

关于python - 在 Outlook 中从 Excel 附件创建数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53950601/

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