【发布时间】:2019-09-30 13:47:40
【问题描述】:
在我的 Flask 页面上,用户可以下载包含来自 pandas 数据框 weekly_data 的数据的 excel 文件。我正在使用带有 xlsxwriter 引擎的 BytesIO 和 pandas ExcelWriter。
当我编辑worksheet.set_column 值时,比如列宽或时间格式,刷新服务器和页面,Excel 工作表的格式与以前完全相同。
这是当用户单击链接下载数据时调用的路由中的代码部分:
fn = 'weeklydata_'+(datetime.today().date()).strftime('%d-%b-%y')+'.xlsx'
output = BytesIO()
writer = pd.ExcelWriter(output, engine='xlsxwriter')
weekly_data.to_excel(writer, sheet_name='Sheet1')
workbook = writer.book
worksheet = writer.sheets['Sheet1']
formatTimes = workbook.add_format({'num_format':'hh:mm'})
worksheet.set_column('B:C',None,formatTimes)
worksheet.set_column('A:A',13)
worksheet.set_column('B:C',16)
writer.save()
output.seek(0)
return send_file(output, attachment_filename=fn, as_attachment=True)
另外,我在代码之前添加了print(weekly_data),只是为了检查DataFrame是否正确,当我下载Excel文件时它不会打印,所以我认为这可能是BytesIO?如果相关的话,我还有另一条使用类似代码下载 Excel 的路线。
有没有看到变化?感谢您的帮助。
与当前问题无关,但时间格式有什么办法可以处理大于 24 小时的小时数?在我提到的另一个 Excel 文件中,所有格式都有效(我刚才为那个 Excel 创建了代码),但是当我双击它时,任何超过 24 小时的时间都会恢复为02/01/1900 04:31:00(对于 52:31)?
【问题讨论】: