我正在尝试向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
发布于 2021-11-01 13:03:02
这是我所做的:
import pyexcel as p
def output_stream():
# create column titles
column_names = ['col1', 'col2', 'col3']
# add some sample data
data = [['item1', 'item2', 'item3']]
# insert header at top of file
data.insert(0, column_names)
# create sheet
sheet = p.Sheet(data, 'A')
# create stream
stream = sheet.stream.xls
return streamhttps://stackoverflow.com/questions/58638575
复制相似问题