Dash 数据表保存到 excel 或带有弹出窗口的 csv window
Dash datatable save to excel or csv with popup window
是否可以使用标准弹出窗口在本地保存破折号数据表window?哪里可以 select 位置,file_name 等?
谢谢!
我不确定使用默认 table 导出机制(通过设置 export_format
参数启用)是否可以实现所需的行为,但可以使用 Download
来自 dash-extensions==0.0.28
的组件。下面是后者的一个小例子,
import dash
import dash_html_components as html
import pandas as pd
from dash.dependencies import Output, Input, State
from dash_extensions import Download
from dash_table import DataTable
from dash_extensions.snippets import send_data_frame
dt = DataTable(columns=[{"id": v, "name": v} for v in range(5)], data=[{v: v * 10 for v in range(5)}], id="table")
app = dash.Dash(prevent_initial_callbacks=True)
app.layout = html.Div([dt, html.Button("Download", id="btn"), Download(id="download")])
@app.callback(Output("download", "data"), [Input("btn", "n_clicks")], [State("table", "data")])
def download_table(n_clicks, data):
df = pd.DataFrame.from_records(data)
return send_data_frame(df.to_csv, "some_data.csv", index=False)
if __name__ == "__main__":
app.run_server()
编辑:根据 Dash 1.20.0,Download
组件已合并到 dash-core-components
。因此,可以在不使用任何 third-party 库的情况下重写上面的示例,
import dash
import dash_html_components as html
import dash_core_components as dcc
import pandas as pd
from dash.dependencies import Output, Input, State
from dash_table import DataTable
dt = DataTable(columns=[{"id": v, "name": v} for v in range(5)], data=[{v: v * 10 for v in range(5)}], id="table")
app = dash.Dash(prevent_initial_callbacks=True)
app.layout = html.Div([dt, html.Button("Download", id="btn"), dcc.Download(id="download")])
@app.callback(Output("download", "data"), [Input("btn", "n_clicks")], [State("table", "data")])
def download_table(n_clicks, data):
df = pd.DataFrame.from_records(data)
return dcc.send_data_frame(df.to_csv, "some_data.csv", index=False)
if __name__ == "__main__":
app.run_server()
是否可以使用标准弹出窗口在本地保存破折号数据表window?哪里可以 select 位置,file_name 等?
谢谢!
我不确定使用默认 table 导出机制(通过设置 export_format
参数启用)是否可以实现所需的行为,但可以使用 Download
来自 dash-extensions==0.0.28
的组件。下面是后者的一个小例子,
import dash
import dash_html_components as html
import pandas as pd
from dash.dependencies import Output, Input, State
from dash_extensions import Download
from dash_table import DataTable
from dash_extensions.snippets import send_data_frame
dt = DataTable(columns=[{"id": v, "name": v} for v in range(5)], data=[{v: v * 10 for v in range(5)}], id="table")
app = dash.Dash(prevent_initial_callbacks=True)
app.layout = html.Div([dt, html.Button("Download", id="btn"), Download(id="download")])
@app.callback(Output("download", "data"), [Input("btn", "n_clicks")], [State("table", "data")])
def download_table(n_clicks, data):
df = pd.DataFrame.from_records(data)
return send_data_frame(df.to_csv, "some_data.csv", index=False)
if __name__ == "__main__":
app.run_server()
编辑:根据 Dash 1.20.0,Download
组件已合并到 dash-core-components
。因此,可以在不使用任何 third-party 库的情况下重写上面的示例,
import dash
import dash_html_components as html
import dash_core_components as dcc
import pandas as pd
from dash.dependencies import Output, Input, State
from dash_table import DataTable
dt = DataTable(columns=[{"id": v, "name": v} for v in range(5)], data=[{v: v * 10 for v in range(5)}], id="table")
app = dash.Dash(prevent_initial_callbacks=True)
app.layout = html.Div([dt, html.Button("Download", id="btn"), dcc.Download(id="download")])
@app.callback(Output("download", "data"), [Input("btn", "n_clicks")], [State("table", "data")])
def download_table(n_clicks, data):
df = pd.DataFrame.from_records(data)
return dcc.send_data_frame(df.to_csv, "some_data.csv", index=False)
if __name__ == "__main__":
app.run_server()