@Tayrus0

Почему bytesIO ломает xlsx файл созданный через pandas?

Есть такой код
df = pandas.DataFrame()
    bb = BytesIO()
    bb.name = f'test.xlsx'
    bb.encoding = "utf-8"

    to_add = {'1': one,
              '2': one,
              '3': one,
              '4': one,
              '5': one,
              '6': one,
              '7': one}
    df = df.append(to_add, ignore_index=True)
    df.to_excel(bb, index=False)

    bb.seek(0)

    await bot.send_document(message.chat.id, bb)


Он создает файл екселя (xlsx), все создается успешно, но когда я открываю файл пишет что он поврежден, как это исправить?
  • Вопрос задан
  • 736 просмотров
Пригласить эксперта
Ответы на вопрос 1
2ord
@2ord
Попробуйте с ключами аргументов
await bot.send_document(chat_id=message.chat.id, document=bb)

Вот так пишет корректный XLSX файл:
код
import pandas
from io import BytesIO

one = 'ttt'
to_add = {'1': one,
          '2': one,
          '3': one,
          '4': one,
          '5': one,
          '6': one,
          '7': one}

bb = BytesIO()
bb.name = f'test.xlsx'
bb.encoding = "utf-8"

df = pandas.DataFrame()
df = df.append(to_add, ignore_index=True)
print(df)

df.to_excel(bb, index=False)

with open(bb.name, 'wb') as f:
    f.write(bb.getbuffer())


Доп. инфа:
https://python-telegram-bot.readthedocs.io/en/stab...
https://gist.github.com/ohld/9c9cbcfa09020be62a635...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы