python / dash pd.to_excel在上载def

时间:2018-11-14 09:56:52

标签: python pandas plotly-dash

我创建并部署了一个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应用程序中不起作用。

谢谢大家的建议!

0 个答案:

没有答案