单击下载链接将 Plotly Dash 数据表输出导出为 CSV

Hui*_*Lim 2 python callback plotly-dash

嗨 任何人都可以帮助建议?我在尝试从单击下载链接到 CSV 文件时从下拉选择过滤的数据表中导出正在填充的数据时遇到问题。

单击下载链接后出错

csv_string = dff.to_csv(index=False, encoding='utf-8')
AttributeError: 'str' object has no attribute 'to_csv'
Run Code Online (Sandbox Code Playgroud)

下载的文件是一个包含 html 代码的文件。

在此处输入图片说明

下面的代码片段

csv_string = dff.to_csv(index=False, encoding='utf-8')
AttributeError: 'str' object has no attribute 'to_csv'
Run Code Online (Sandbox Code Playgroud)

xhl*_*uca 10

CSV 导出由dash_table.DataTable. 您只需要export_format='csv'在构建表时指定:

dash_table.DataTable(
    id="table",
    columns=[{"name": i, "id": i} for i in df.columns],
    data=df.to_dict("records"),
    export_format="csv",
)
Run Code Online (Sandbox Code Playgroud)

app.py是您可以运行的完整示例:

import dash
import dash_table
import dash_html_components as html
import pandas as pd

df = pd.DataFrame(
    [
        ["California", 289, 4395, 15.3, 10826],
        ["Arizona", 48, 1078, 22.5, 2550],
        ["Nevada", 11, 238, 21.6, 557],
        ["New Mexico", 33, 261, 7.9, 590],
        ["Colorado", 20, 118, 5.9, 235],
    ],
    columns=["State", "# Solar Plants", "MW", "Mean MW/Plant", "GWh"],
)

app = dash.Dash(__name__)
server = app.server

app.layout = dash_table.DataTable(
    id="table",
    columns=[{"name": i, "id": i} for i in df.columns],
    data=df.to_dict("records"),
    export_format="csv",
)

if __name__ == "__main__":
    app.run_server(debug=True)
Run Code Online (Sandbox Code Playgroud)

您将在表格上方看到一个按钮: 在此处输入图片说明


ami*_*min 0

我相信你的答案是这样的:

@app.server.route('/dash/urlToDownload') 
def download_csv():
    return send_file('output/downloadFile.csv',
                     mimetype='text/csv',
                     attachment_filename='downloadFile.csv',
                     as_attachment=True)
Run Code Online (Sandbox Code Playgroud)

您可以查看此链接以获取更多信息:

允许用户点击下载 CSV