带有下拉菜单的 Python Dash 应用程序可以选择 excel 文件表并显示在表格中

标签 python excel drop-down-menu plotly-dash

我正在学习 Dash,最终目标是开发一款可以快速分析 Excel 文件中的数据集的应用程序。我想要一个下拉菜单,允许在 excel 文件中的工作表之间切换。我无法让它正常运行。我可以将它输出到图表而不是表格。我的代码如下:

import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html
import dash_table_experiments as dt
import pandas as pd

app = dash.Dash()

df = pd.read_excel('output.xlsx', sheet_name=None)

app.layout = html.Div(
    html.Div([dcc.Dropdown(id='drop_value',
                           options=[{'label': i, 'value': i} for i in df],
                           value='Sheet1')]),
    html.Div([dt.DataTable(rows=[{}],
                           id='table')])
)


@app.callback(Output('table', 'rows'), [Input('drop_value', 'value')])
def update_info_table(drop_value):
    if drop_value == 'Sheet1':
        new_data = df['Sheet1'].to_dict()
        return new_data
    elif drop_value == 'Sheet2':
        new_data = df['Sheet2'].to_dict()
        return new_data
    else:
        new_data = df['Sheet3'].to_dict()
        return new_data


if __name__ == '__main__':
    app.run_server()

当我运行这段代码时,出现以下错误: TypeError: init() 接受 1 到 2 个位置参数,但给出了 3 个

我假设这与我尝试提供给数据表的数据集的格式有关。现在我只使用一个虚拟的 Excel 文件,其中只有两列标记为“x1”和“y1”。

最佳答案

调整后的代码,现在似乎可以正常工作了。正确的代码如下,供任何需要的人使用。

import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import dash_table_experiments as dt

# Load in data set
sheet_to_df_map = pd.ExcelFile('output.xlsx')
dropdown_options = pd.read_excel('output.xlsx', sheet_name=None)

# Create the dash app
app = dash.Dash()

# Define the layout for the drop down menu
app.layout = html.Div([
    html.H2("Select Sheet Number"),
    html.Div([dcc.Dropdown(id="field_dropdown", options=[{
                               'label': i,
                               'value': i
                           } for i in dropdown_options],
                           value='Sheet3')],
             style={'width': '25%',
                    'display': 'inline-block'}),
    dt.DataTable(rows=[{}],
                 row_selectable=True,
                 filterable=True,
                 sortable=True,
                 selected_row_indices=[],
                 id='datatable')
])


@app.callback(
    dash.dependencies.Output('datatable', 'rows'),
    [dash.dependencies.Input('field_dropdown', 'value')])
def update_datatable(user_selection):
    if user_selection == 'Sheet1':
        return sheet_to_df_map.parse(0).to_dict('records')
    elif user_selection == 'Sheet2':
        return sheet_to_df_map.parse(1).to_dict('records')
    else:
        return sheet_to_df_map.parse(2).to_dict('records')


if __name__ == '__main__':
    app.run_server()code here

关于带有下拉菜单的 Python Dash 应用程序可以选择 excel 文件表并显示在表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49266771/

相关文章:

javascript - 如何让下拉菜单在点击时打开/关闭而不是悬停?

javascript - 通过 JavaScript 填充 Html 选择 "FontSize"

jquery - 在导航和下拉菜单之间创建一个间隙

python - 为什么 models.ForeignKey 有优势?

python - 如何从他的 ManyToMany 关系中选择包含某些 child 的 parent ?

python - 尝试绘制简单的条形图时出错

excel - 形状(工作表)与控件(用户窗体)

python - 透明背景与 matplotlib 的 set_title()

java - 从互联网保存 Excel 文件

excel - 复制并插入新列后隐藏原始列