pyexcel запись в поток - PullRequest
       28

pyexcel запись в поток

1 голос
/ 31 октября 2019

Я пытаюсь записать в BytesIO частичный файл xls, чтобы передать клиенту файл Excel.

Проблема в том, что клиент получает только первые несколько строк (первая итерация выхода для объекта byteio)

Похоже, что save_to_memory добавляет байты EOF, хотя поток не должен закрываться

Пример кода:

import io
import pyexcel as pe
from aiohttp import web

async def get(request):
  response = web.StreamResponse(headers={'Content-Disposition': 'inline; filename="myfile.xls"'})
  await response.prepare(request)
  response.content_type = 'multipart/x-mixed-replace;boundary=ffserver'
  data = [1,2,3,4]
  mem = io.BytesIO()
  sheet = pe.Sheet(name='ids', colnames=['id'])

  try:
      for id in data:
         sheet.extend_rows([id])
         mem = sheet.save_to_memory("xls", mem)
         await response.write(mem.read())
  finally:
      await response.write_eof()

, в этом случае клиент получит только строку со значением 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...