Я создал и развернул dash-приложение, в котором есть компонент upload, а в обратном вызове есть def. Def разделяет компонент содержимого содержимого загрузки, затем декодирует его с помощью base64, затем, если загруженный файл является Excel (но он должен работать и с csv, но проблема остается даже с csv), def считывает расшифровывается как это:
df = pd.read_excel(io.BytesIO(decoded))
Это уже содержится в стандартной документации компонента dash upload: https://dash.plot.ly/dash-core-components/upload и до этого момента он отлично работал как на моем локальном хосте, так и на моем развернутом приложении.
Однако , как только я пытаюсь выполнить этот код, он запускается с ошибкой:
xlr = pd.ExcelWriter(file_to / filename)
df.to_excel(xlr, 'sheet_name'='sheet1')
xlr.save
но он не работает без ExcelWriter, как df.to_excel(file_to / filename, 'sheet1')
.
Я поставлю весь код ниже:
def parse_contents(contents, filename, date, file_to):
filename= filename[:].lower()
content_type, content_string = contents.split(',')
decoded = base64.b64decode(content_string)
try:
if '.csv' in filename:
df = pd.read_csv(io.StringIO(decoded.decode('utf-8')))
df.to_csv(file_to / filename, sep=",", encoding='utf8')
elif '.xlsx' in filename:
df = pd.read_excel(io.BytesIO(decoded))
(Как я уже говорил, до этого момента все работает нормально, и панды определенно запускаются, в связанном примере есть вывод для помещения строк df в компонент экспериментальной таблицы, а без запуска to_excel в совершенстве).
(Я помещаю "/" между file_to и именем файла, поскольку я использую Path () из pathlib для file_to, а приложение развертывается в Ubuntu, поэтому путь читается как PosixPath).
xlr = pd.ExcelWriter(file_to / filename)
df.to_excel(xlr, sheet_name="sheet1")
xlr.save()
except Exception as e:
print(e)
return html.Div([ 'There was an error processing this file.' + filename])
return html.Div([html.H5(filename), html.H6(datetime.datetime.fromtimestamp(date)), html.Hr(),])
Я протестировал pd.to_excel в отдельном файле, и он также работал нормально, и to_excel также работал на моем локальном хосте (Windows), только в приложении dash, в этом компоненте загрузки, он не работает.
Спасибо за любые предложения, ребята!