如何使用烧瓶,Python 2.7将Pandas数据帧传递到Web中的按钮以下载文件(.csv或.xlsx)

时间:2018-09-12 03:28:13

标签: python pandas csv flask xlsx

我的Web应用程序具有可视化功能,供用户通过from ...day to ...day(开始日期到结束日期)查看图表(平均,标准偏差),其中(生产线)然后向SQL请求连接数据库。 这是可视化表单。

enter image description here

在用户请求后,我的Web应用程序将显示约31个图表,并且我添加了3个按钮来下载文件,每个Web图表如下所示。 (示例。图表的第1,2号):

enter image description here enter image description here

这是我的JavaScript,用于在文件.html(spc_chart.html)中创建图表等, 但尚未将数据框传递给{{ 1}}:

enter image description here

我在3个数组(名称为:ChartDataAvg,ChartDataStd,RawData)中具有平均图表数据,标准图表数据,原始数据(使用计算平均值,标准)的所有熊猫数据框。

我只知道如何下载文件,必须在每个按钮处添加.html并在python中设置href="/...",然后将SQL发送到@app.route('/...')的每个def并将数据帧传递到Web计算。 ref({Flask: Download a csv file on clicking a button但是,我不知道如何在另一个@app.route('/...')中从def传递用户的SQL请求。

是否可以将所有熊猫数据帧传递到按钮以下载图表1、2、3,...中的每个文件,或将SQL发送到另一个@app.route(/...)中的def? / strong>

2 个答案:

答案 0 :(得分:0)

您可以首先使用以下功能将数据框制作为csv格式:

def build_csv_data(dataframe):
    csv_data = dataframe.to_csv(index=False, encoding='utf-8')
    csv_data = "data:text/csv;charset=utf-8," + quote(csv_data)
    return csv_data

然后为您的下载链接创建一个回调函数,如下所示:

@app.callback(Output('download_link', 'href'), [<your dataframe input variables>])
    def callback_build_csv_data(dataframe):           
        return build_csv_data(dataframe)

最后,在页面布局中,按如下所示添加下载链接:

html.A('Download Data',
        id='download_link',
        download="rawdata.csv",
        href="",
        target="_blank"
        ),

希望这很有用。

答案 1 :(得分:0)

这是我为此解决的方法:

"electron-packager . hiss_xread --overwrite --asar --platform=win32 --arch=x64 --appCopyright=\"Copyright 2020 Tom Ravn, all rights reserved.\" --icon=src/favicon.ico --prune=true --out=release-builds --version-string.CompanyName=CE --version-string.FileDescription=CE --version-string.ProductName=\"Hiss xRead\""