Django下载Excel文件导致Excel文件损坏

时间:2019-09-09 21:29:59

标签: django excel pandas

我正在尝试将Django应用中的Pandas数据框导出为Excel文件。我目前将其导出到CSV文件,除非另有说明,否则工作正常。问题是,当用户在Excel App中打开csv文件时,该字符串看起来像是数字。例如,单元格的值为“ 111,1112”或“ 123E345”,该字符串应为字符串,最终在Excel视图中显示为错误或指数;即使我确保“熊猫”列不是数字。

这是我导出为CSV的方式:

response = HttpResponse(content_type='text/csv')  
filename = 'aFileName'
response['Content-Disposition'] = 'attachment; filename="' + filename + '"'  
df.to_csv(response, encoding='utf-8', index=False)
return response

要导出内容类型为EXCEL的内容,我看到了一些建议采用以下方法的参考:

with BytesIO() as b:
        # Use the StringIO object as the filehandle.
        writer = pd.ExcelWriter(b, engine='xlsxwriter')
        df.to_excel(writer, sheet_name='Sheet1')
        writer.save()
        return HttpResponse(b.getvalue(), content_type='application/vnd.ms-excel')

当我尝试这样做时,它似乎可以导出某些内容,但是如果我尝试在Excel Office 2016中打开文件,则会收到一条Excel消息,指出文件已损坏。通常大小最多为几KB。

请告知第二种方法可能导致出口不良的问题。我正在使用Django 2.2.1,Pandas 0.25.1

谢谢

0 个答案:

没有答案