dash-extensions
软件包中的
Download
组件使用Blob执行下载操作,因此可能会解决您的问题。这是一个小例子,
import dash
import dash_html_components as html
import numpy as np
import pandas as pd
from dash.dependencies import Output, Input
from dash_extensions import Download
from dash_extensions.snippets import send_data_frame
data = np.column_stack((np.arange(10), np.arange(10) * 2))
df = pd.DataFrame(columns=["a column", "another column"], data=data)
app = dash.Dash(prevent_initial_callbacks=True)
app.layout = html.Div([html.Button("Download csv", id="btn"), Download(id="download")])
@app.callback(Output("download", "data"), [Input("btn", "n_clicks")])
def generate_csv(n_nlicks):
return send_data_frame(df.to_csv, filename="some_name.csv")
if __name__ == '__main__':
app.run_server()
如果你决定尝试它,你可以通过pip安装该软件包。
pip install dash-extensions==0.0.18
免责声明:我是Dash扩展的作者。
编辑:根据Dash 1.20.0版本,“Download”组件已经合并到“dash-core-components”中。因此,上述示例可以重新编写而无需使用任何第三方库。
import dash
import dash_html_components as html
import dash_core_components as dcc
import numpy as np
import pandas as pd
from dash.dependencies import Output, Input
data = np.column_stack((np.arange(10), np.arange(10) * 2))
df = pd.DataFrame(columns=["a column", "another column"], data=data)
app = dash.Dash(prevent_initial_callbacks=True)
app.layout = html.Div([html.Button("Download csv", id="btn"), dcc.Download(id="download")])
@app.callback(Output("download", "data"), [Input("btn", "n_clicks")])
def generate_csv(n_nlicks):
return dcc.send_data_frame(df.to_csv, filename="some_name.csv")
if __name__ == '__main__':
app.run_server()