Python 连接到openpyxl工作簿以在Flask中下载文件

Python 连接到openpyxl工作簿以在Flask中下载文件,python,pandas,flask,pandas.excelwriter,Python,Pandas,Flask,Pandas.excelwriter,目标是在Excel工作表中保存多个数据帧(每个数据帧作为一个工作表),并在用户点击指定URL时下载文件 这是代码 @app.server.route("/file/excel") def download_excel(): wb = Workbook() df1 = pd.DataFrame(...) sheet1 = wb.active sheet1.title = "Sheet1" for r in data

目标是在Excel工作表中保存多个数据帧(每个数据帧作为一个工作表),并在用户点击指定URL时下载文件

这是代码

@app.server.route("/file/excel")
def download_excel():

    wb = Workbook()

    df1 = pd.DataFrame(...)
    sheet1 = wb.active
    sheet1.title = "Sheet1"
    for r in dataframe_to_rows(df1, index=False, header=True):
        sheet1.append(r)

    df2 = pd.DataFrame(...)
    sheet2 = wb.active
    sheet2.title = "Sheet1"
    for r in dataframe_to_rows(df2, index=False, header=True):
        sheet2.append(r)


    excel_stream = io.BytesIO()
    wb.save(excel_stream)
    excel_stream.seek(0)  # go to the beginning of the stream
    #
    return send_file(
        excel_stream,
        mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        attachment_filename="File.xlsx",
        as_attachment=True,
        cache_timeout=0
    )

我得到以下错误

AttributeError:“DatetimeArray”对象没有属性“tolist”

df1
有一个数据时间数据类型的列。我做了一些搜索,发现不建议遍历数据帧,这是导致此错误的原因。

另一种方法是使用
df.to_excel()
,但我不知道如何让它与BytesIO一起工作,因为我需要流式传输要下载的数据

问题:如何将数据保存到excel工作表并获取错误。
我必须使用flask的
send_file()
在客户端下载该文件。

在附加到excel工作表之前,将datatime数据类型转换为字符串解决了该问题。可能有更好的解决方案,但这解决了我的问题

您是否尝试过如何处理该问题?问题是否与您的错误有关?因为我觉得您的问题比您在此处显示的错误消息更广泛:)问题是它无法处理datetime数据类型。在附加到writer之前,我简单地转换为string,它运行良好。也许有更好的解决办法,但这解决了我的问题。