python控制浏览器导出数据_Django导出数据为Excel,调用浏览器下载
1. 環境
Django (2.1.10) + Python3.6 +?xlwt (1.3.0)
操作系統使用的為:Windows 7
2. 接口代碼
defnow_export(request):
data_list= CIP.objects.all() #獲取數據的查詢集
if notdata_list:return HttpResponse(json.dumps({"state": "1", "msg": "查無數據,導出失敗"}), content_type="application/json")
ws= Workbook(encoding='utf-8') #設置Excel為UTF-8的編碼格式
w = ws.add_sheet(u"正在清洗的CIP報表") #設置sheet名稱
w.write(0, 0, "id")
w.write(0,1, u"清洗線路")
w.write(0,2, u"操作者")
w.write(0,3, u"清洗目標")
w.write(0,4, u"清洗類型")
w.write(0,5, u"CIP狀態")
w.write(0,6, u"開始時間")#把需要導出的數據寫到文件中
excel_row = 1
for obj indata_list:
w.write(excel_row, 0, excel_row)
w.write(excel_row,1, obj.CIPNo)
w.write(excel_row,2, obj.oper)
w.write(excel_row,3, obj.ccid)
w.write(excel_row,4, obj.mode)
w.write(excel_row,5, "CIP程序啟動")
w.write(excel_row,6, datetime.strftime(obj.start_time, '%Y-%m-%d %H:%M:%S'))
excel_row+= 1sio=BytesIO() # 寫出到IO
ws.save(sio)
sio.seek(0) # 重新定位到開始
response= HttpResponse(sio.getvalue(), content_type='application/vnd.ms-excel') #設置文件格式為Excel
#attachment(意味著消息體應該被下載到本地;大多數瀏覽器會呈現一個“保存為”的對話框,將filename的值預填為下載后的文件名)
response['Content-Disposition'] = 'attachment; filename=test.xls'response.write(sio.getvalue())return response
提示:若出現 TypeError: string argument expected, got 'bytes' ?錯誤。問題出現在使用StringIO的write方法上,用BytesIO替代StringIO即可解決問題,筆者這里已經替換過了
3. 前端請求
注意:但需要注意的是,如果想要用這種方式下載文件,不能使用AJAX的方式,而是應該新建一個標簽,模擬點擊下載。原因為處于安全性考慮,JavaScript無法與磁盤進行交互,因此AJAX得到的內容將被保留在內存中,而不是磁盤上。
3.1 請求方式為GET時:
此時直接在A標簽的href屬性中指定路由即可
導出報表
3.2 請求方式為POST時:
這種請求 需寫一個form表單,把請求所需數據寫在表單中,在A標簽中指定表單的提交方法即可。(對于a標簽實現post請求感興趣的可以自行百度其他方法)
導出報表
開始日期:
id="startdate" class="input-text Wdate" name="startdate">
結束日期:
id="enddate" class="input-text Wdate" name="enddate">
線路:
all
目標:
all
 搜索
總結
以上是生活随笔為你收集整理的python控制浏览器导出数据_Django导出数据为Excel,调用浏览器下载的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 视觉SLAM十四讲(2):初识SLAM
 - 下一篇: 雷军:希望100年后小米也能像徕卡一样成