Python 3.8: обработка из памяти файла Excel, извлеченного из электронной почты Outlook - PullRequest
0 голосов
/ 14 февраля 2020

Я работаю над сценарием, который выполняет следующие действия:

1) Go через почтовый ящик Outlook
2) Останавливается на электронном письме, которое соответствует моему состоянию
3) Захватывает вложенный файл Excel в формате .XLS (ТОЛЬКО 1 файл)
4) Массаж данных там
5) Сохранение файла результатов в папке

Проблема в том, что я пытаюсь чтобы Python обработал файл из памяти, и я получил следующую ошибку при чтении файла.

AttributeError: Item.Read

Я ценю любые советы здесь.

import win32com.client
import os
import xlrd

from io       import BytesIO 
from datetime import datetime, date
from openpyxl import load_workbook


# Retrieve the email attachment from Outlook.
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")


# Access the Inbox.
inbox = outlook.GetDefaultFolder(6)

messages = inbox.Items
for message in messages:

    if message.Subject == "XYZ" and message.Senton.date() == date.today():

        attachments = message.Attachments
        a   = attachments.Item(1)


##### Most likely I am missing something between these 2 lines
workbook = xlrd.open_workbook(file_contents=BytesIO(a.read()))

1 Ответ

1 голос
/ 14 февраля 2020

Я пошел в погоню за веселым inte rnet и нашел этот пример кода в этом PDF

https://github.com/python-excel/tutorial/raw/master/python-excel.pdf

from mmap import mmap,ACCESS_READ
from xlrd import open_workbook
print open_workbook('simple.xls')
with open('simple.xls','rb') as f:
 print open_workbook(
 file_contents=mmap(f.fileno(),0,access=ACCESS_READ)
 )
aString = open('simple.xls','rb').read()
print open_workbook(file_contents=aString)
...