首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyexcel写入流

pyexcel写入流
EN

Stack Overflow用户
提问于 2019-10-31 15:25:51
回答 1查看 74关注 0票数 1

我正在尝试向BytesIO写入一个部分xls文件,以便向客户端传回一个excel文件。

问题是客户端只获取前几行(首先对byteio对象进行迭代)

看起来save_to_memory正在添加EOF字节,尽管流不应该关闭

示例代码:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2021-11-01 13:03:02

这是我所做的:

代码语言:javascript
复制
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 stream
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58638575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档