我创建并部署了一个dash-app,它具有一个上载组件,并且在回调中有一个def。 def拆分上载的“内容”部分,然后使用base64对其进行解码,然后,如果上载的文件是Excel(但它也应与csv一起使用,但问题甚至对于csv仍然存在),def读取了解码后的var像这样:
df = pd.read_excel(io.BytesIO(decoded))
这已经在破折号上传组件的标准文档中:https://dash.plot.ly/dash-core-components/upload,到目前为止,它在我的本地主机和已部署的应用程序上都可以正常工作。
但是,一旦我尝试执行此代码,它就会在错误下运行:
xlr = pd.ExcelWriter(file_to / filename)
df.to_excel(xlr, 'sheet_name'='sheet1')
xlr.save
,但是没有df.to_excel(file_to / filename, 'sheet1')
之类的没有ExcelWriter的设备就无法工作。
我将整个代码放在下面:
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))
(正如我所说,到目前为止,它工作正常,并且pandas明确运行,链接示例中有一个输出,用于将df行放入dash-table-experiments组件中,并且没有to_excel运行完美)。 (由于我使用pathlib中的path()作为file_to,并且将应用程序部署在ubuntu上,因此我在file_to和文件名之间放置了“ /”,
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应用程序中不起作用。
谢谢大家的建议!