从 Dash (send_file) 下载包含多个工作表的 Excel 文件
Download Excel file with multiple sheets from Dash (send_file)
我一直在尝试创建一个仪表板,允许用户下载分隔在 Excel 文件的不同 sheet 中的数据。我设法单独创建了 Excel 文件,所以我知道它可以工作,但是当我尝试将文件作为输出发送时出现错误。我试过 send_data_frame 但它只会 return 第一个数据帧只有一个 sheet.
@app.callback(
Output("download-dataframe-xlsx", "data"),
Input("save-button", "n_clicks"),
State("memory-output", "data"),
prevent_initial_call=True)
def download_as_excel(n_clicks, table_data):
if not n_clicks:
raise PreventUpdate
writer = pd.ExcelWriter('new_excel_file.xlsx', engine="xlsxwriter")
for df in table_data:
copytoexcel = pd.DataFrame(table_data[df])
copytoexcel.to_excel(writer, sheet_name=df)
writer.save()
return send_file(writer, attachment_filename="testing.xlsx", as_attachment=True)
总而言之,我有一个名为 table_data 的字典,我正在从另一个回调中导入它,该字典中有一个字符串作为键,一个列表作为值。
循环和数据有效,但一旦我尝试使用 Dash 执行它,文件将无法下载。
有什么帮助吗?我试过将它作为字节发送,data_frame,但没有成功!网上也很少有关于它的文档!
提前致谢!
您应该尝试 Dash 组件中的 dcc.send_file(...) :
@app.callback(
Output("download-dataframe-xlsx", "data"),
Input("save-button", "n_clicks"),
State("memory-output", "data"),
prevent_initial_call=True)
def download_as_excel(n_clicks, table_data):
if not n_clicks:
raise PreventUpdate
else:
writer = pd.ExcelWriter('new_excel_file.xlsx', engine="xlsxwriter")
for df in table_data:
copytoexcel = pd.DataFrame(table_data[df])
copytoexcel.to_excel(writer, sheet_name=df)
writer.save()
return dcc.send_file('new_excel_file.xlsx')
我一直在尝试创建一个仪表板,允许用户下载分隔在 Excel 文件的不同 sheet 中的数据。我设法单独创建了 Excel 文件,所以我知道它可以工作,但是当我尝试将文件作为输出发送时出现错误。我试过 send_data_frame 但它只会 return 第一个数据帧只有一个 sheet.
@app.callback(
Output("download-dataframe-xlsx", "data"),
Input("save-button", "n_clicks"),
State("memory-output", "data"),
prevent_initial_call=True)
def download_as_excel(n_clicks, table_data):
if not n_clicks:
raise PreventUpdate
writer = pd.ExcelWriter('new_excel_file.xlsx', engine="xlsxwriter")
for df in table_data:
copytoexcel = pd.DataFrame(table_data[df])
copytoexcel.to_excel(writer, sheet_name=df)
writer.save()
return send_file(writer, attachment_filename="testing.xlsx", as_attachment=True)
总而言之,我有一个名为 table_data 的字典,我正在从另一个回调中导入它,该字典中有一个字符串作为键,一个列表作为值。 循环和数据有效,但一旦我尝试使用 Dash 执行它,文件将无法下载。
有什么帮助吗?我试过将它作为字节发送,data_frame,但没有成功!网上也很少有关于它的文档!
提前致谢!
您应该尝试 Dash 组件中的 dcc.send_file(...) :
@app.callback(
Output("download-dataframe-xlsx", "data"),
Input("save-button", "n_clicks"),
State("memory-output", "data"),
prevent_initial_call=True)
def download_as_excel(n_clicks, table_data):
if not n_clicks:
raise PreventUpdate
else:
writer = pd.ExcelWriter('new_excel_file.xlsx', engine="xlsxwriter")
for df in table_data:
copytoexcel = pd.DataFrame(table_data[df])
copytoexcel.to_excel(writer, sheet_name=df)
writer.save()
return dcc.send_file('new_excel_file.xlsx')