Как открыть и обновить книгу Excel из приложения Python Dash (в качестве обратного вызова)? - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь открыть, обновить и запустить файл Excel из приложения Python Dash, основываясь на вводе, который может выбрать пользователь.

Приложение пытается получить доступ к Excel и обновить определенные поля (используя xlwings), а затем вычислить модель и использовать результаты этих расчетов для построения некоторых графиков.

У меня есть поля ввода, а затем я пытаюсь сделать обратный вызов, открыть и превзойти (я пытался сделать это как в обратном вызове, так и в начале приложения, оба приводят к одной и той же ошибке).

Код ниже показывает, что именно я делаю. Приложение работает без ошибок, но я сталкиваюсь с ошибкой во время выполнения, что CoInitilize не был инициирован.

pywintypes.com_error: (-2147221008, 'CoInitialize не был вызван.', Нет, Нет)

Я пытался запустить другой поток для Excel, но не мог заставить его работать вообще.

@app.callback(
    Output('output-container', 'children'),
    [Input('button', 'n_clicks')],
    [dash.dependencies.State('my-input', 'value')]
)
def update_output(n_clicks, value):

    fpath = 'file_xlsx.xlsx'
    app = xw.App(visible=True)
    wb = xw.Book(fpath)

    flexible_inputs = wb.sheets['Inputs']

    flexible_inputs.range('F4').value = value

    new_value = value

    return 'Success in changing the value of F4 Flexible Inputs to "{}"'.format(new_value)


Буду признателен за любую помощь (также если у вас есть другая идея, как заставить приложение Dash обновлять Excel).

...