Da sh Данные таблицы скачать в Excel - PullRequest
0 голосов
/ 28 апреля 2020

В настоящее время я использую приведенный ниже скрипт для загрузки таблицы данных из созданного мною da sh. Однако загрузка работает нормально, когда я размещаю Da sh локально и когда я пытаюсь нажать кнопку загрузки через другую систему, файл загружается на хост-компьютер, а не на компьютер пользователя. Я прошу прощения, если мой вопрос кажется глупым, поскольку я очень плохо знаком с Da sh & python.

html.Button(id=“save-button”,n_clicks=0,children=“Save”),
html.Div(id=“output-1”,children=“Press button to save data at your desktop”)

@app.callback(
Output(“output-1”,“children”),
[Input(“save-button”,“n_clicks”)],
[State(“table”,“data”)])

def selected_data_to_csv(nclicks,table1):
   if nclicks == 0:
      raise PreventUpdate
   else:
     pd.DataFrame(table1).to_csv(‘C:\Users\’+loggedin_user+’\Desktop\Open_Queue_Dump.csv’,index=False)
   return “Data Submitted”

1 Ответ

0 голосов
/ 28 апреля 2020

Да, вы запускаете загрузку на диск C сервера. Пожалуйста, посмотрите пример кода, взятого из здесь , который должен делать то, что вы хотите:

import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import urllib

df = pd.DataFrame({
    'a': [1, 2, 3, 4],
    'b': [2, 1, 5, 6],
    'c': ['x', 'x', 'y', 'y']
})


def generate_table(dataframe, max_rows=10):
    return html.Table(
        # Header
        [html.Tr([html.Th(col) for col in dataframe.columns])] +

        # Body
        [html.Tr([
            html.Td(dataframe.iloc[i][col]) for col in dataframe.columns
        ]) for i in range(min(len(dataframe), max_rows))]
    )


app = dash.Dash(__name__)
app.css.append_css({"external_url": "https://codepen.io/chriddyp/pen/bWLwgP.css"})
app.layout = html.Div([
    html.Label('Filter'),

    dcc.Dropdown(
        id='field-dropdown',
        options=[
            {'label': i, 'value': i} for i in
            (['all'] + list(df['c'].unique()))],
        value='all'
    ),
    html.Div(id='table'),
    html.A(
        'Download Data',
        id='download-link',
        download="rawdata.csv",
        href="",
        target="_blank"
    )
])


def filter_data(value):
    if value == 'all':
        return df
    else:
        return df[df['c'] == value]


@app.callback(
    dash.dependencies.Output('table', 'children'),
    [dash.dependencies.Input('field-dropdown', 'value')])
def update_table(filter_value):
    dff = filter_data(filter_value)
    return generate_table(dff)


@app.callback(
    dash.dependencies.Output('download-link', 'href'),
    [dash.dependencies.Input('field-dropdown', 'value')])
def update_download_link(filter_value):
    dff = filter_data(filter_value)
    csv_string = dff.to_csv(index=False, encoding='utf-8')
    csv_string = "data:text/csv;charset=utf-8," + urllib.quote(csv_string)
    return csv_string


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