亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django / Pandas - 創建 Excel 文件并作為下載

Django / Pandas - 創建 Excel 文件并作為下載

波斯汪 2023-06-20 15:13:05
我正在嘗試使用 pandas 創建一個 Excel 文件,并通過 Django 將其作為可下載文件提供給用戶。我就我在此處找到的主題整理了一些不同的答案,最后得到了這段代碼:        collection = [{"title": "something", "price": 34, "quantity": 23}, {..}]        output = BytesIO()        df = pd.DataFrame(collection, columns=['title', 'price', 'quantity'])        writer = pd.ExcelWriter(output, engine='xlsxwriter')        df.to_excel(writer, sheet_name='Sheet1')        writer.save()        output.seek(0)        workbook = output.getvalue()        response = StreamingHttpResponse(workbook, content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')        response['Content-Disposition'] = f'attachment; filename={output_name}.xlsx'        return response一切正常,直到我嘗試打開生成的文件 - 我可能會出錯,說文件已損壞或數據格式有問題。我懷疑它可能與二進制數據有關?我該如何解決這個問題?解決方案結果我不得不刪除一些東西,所以代碼現在看起來像這樣并且工作正常:        collection = [{"title": "something", "price": 34, "quantity": 23}, {..}]        output = BytesIO()        df = pd.DataFrame(collection, columns=['title', 'price', 'quantity'])        writer = pd.ExcelWriter(output, engine='xlsxwriter')        df.to_excel(writer, sheet_name='Sheet1')        writer.save()        output.seek(0)        # workbook = output.getvalue()        response = StreamingHttpResponse(output, content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')        response['Content-Disposition'] = f'attachment; filename={output_name}.xlsx'        return response
查看完整描述

4 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

我認為您可能會使它變得比需要的復雜得多。


以下對我來說很好用:


import pandas as pd

from django.http import HttpResponse


df = pd.DataFrame(data)

response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')

response['Content-Disposition'] = 'attachment; filename="filename.xlsx"'                                        

df.to_excel(response)

return response


查看完整回答
反對 回復 2023-06-20
?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

解決方案


結果我不得不刪除一些東西,所以代碼現在看起來像這樣并且工作正常:


        collection = [{"title": "something", "price": 34, "quantity": 23}, {..}]


        output = BytesIO()


        df = pd.DataFrame(collection, columns=['title', 'price', 'quantity'])


        writer = pd.ExcelWriter(output, engine='xlsxwriter')

        df.to_excel(writer, sheet_name='Sheet1')

        writer.save()


        output.seek(0)

        # workbook = output.getvalue()


        response = StreamingHttpResponse(output, content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')

        response['Content-Disposition'] = f'attachment; filename={output_name}.xlsx'

        return response


查看完整回答
反對 回復 2023-06-20
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

AI 建議:):


import pandas as pd

from django.http import HttpResponse


df = pd.DataFrame(data)

response = HttpResponse(content_type='application/ms-excel')

response['Content-Disposition'] = 'attachment; filename="my_data.xlsx"'

df.to_excel(response, index=False)

return response


查看完整回答
反對 回復 2023-06-20
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

在 Excel 中打開時可能是數據類型問題,請嘗試將數據轉換為字符串,然后創建 excel 并嘗試。

另一個想法是使用一組樣本記錄創建文件,而不是整個框架來驗證它是否是數據問題。數據集中的 Nan's 也可能存在問題。檢查您是否需要忽略/轉換/替換它。


查看完整回答
反對 回復 2023-06-20
  • 4 回答
  • 0 關注
  • 302 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號