我正在尝试将压缩文件中的excel文件发送回用户浏览器。
我使用openpyxl构建excel文件,这是我的代码:
@app.route('/test', methods=['GET', 'POST'])
def test():
# ...
from zipfile import ZipFile
# ...
buf = BytesIO()
wb.save(buf)
buf.seek(0)
with ZipFile(buf, 'w') as myzip:
myzip.write(buf, arcname='test.xlsx')
return send_file(myzip, attachment_filename='folder.zip', as_attachment=True)
但是,出现以下错误:
TypeError:状态:路径应为字符串,字节,os.PathLike或整数,而不是_io.BytesIO
如何在不使用bytesio对象的情况下执行此操作?还是我可以修改代码,使其可以容纳bytesio对象?
非常感谢。
答案 0 :(得分:0)
尝试此代码。
@app.route('/test', methods=['GET', 'POST'])
def test():
# ...
from zipfile import ZipFile
# ...
buf = BytesIO()
wb.save(buf)
buf.seek(0)
filename = 'folder.zip' # assuing zip file u need
with ZipFile(filename, 'w') as myzip:
myzip.writestr(zinfo_or_arcname='test.xlsx', bytes=buf.read())
return send_file(myzip, attachment_filename='folder.zip', as_attachment=True)
使用writestr
代替write
filename = 'folder.zip' # assuing zip file u need
with ZipFile(filename, 'w') as myzip:
myzip.writestr(zinfo_or_arcname='test.xlsx', bytes=buf.read())