【问题标题】:Flask-Pandas Creating a download file [duplicate]Flask-Pandas 创建下载文件 [重复]
【发布时间】:2017-03-15 12:19:37
【问题描述】:

我有一个小应用程序,我在其中输入了一些 csv 文件,使用 pandas 进行一些数据处理,最终我希望在完成后将结果吐出一个 excel 文件。

现在我可以将处理结果呈现为 html,并且我已经建立并运行了一个表。但是,当我尝试创建要下载的 excel 文件时,问题就来了。

以下是获取数据框并创建 excel 文件的代码部分。

进口:

from flask import Flask, request, render_template, send_file
from io import BytesIO
import pandas as pd

.
. Stuff
.

output = BytesIO()
writer = pd.ExcelWriter(output, engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
xlsx_data = output.getvalue()

return send_file(xlsx_data, attachment_filename='output.xlsx', as_attachment=True)

它会下载但它的大小为 0kb,我在 excel 中得到以下内容,Excel Cannot open the file 'output.xlsx' because the file format or file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file.

有什么问题?

使用 python 3.6

【问题讨论】:

    标签: python-3.x pandas flask


    【解决方案1】:

    在内存中写入初始文件后,需要seek回到文件开头。并且不需要xlsx_data 变量:

    # ...
    writer.save()
    output.seek(0)
    return send_file(output, attachment_filename='output.xlsx', as_attachment=True)
    

    Writing then reading in-memory bytes (BytesIO) gives a blank result

    【讨论】:

    • 对我来说这个解决方案很好用。
    • 我有同样的问题,但 seek(0) 对我不起作用。
    猜你喜欢
    • 2015-03-16
    • 2015-07-13
    • 2020-10-27
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    相关资源
    最近更新 更多