Python模組-xlwt模組 Django從資料庫匯出Excel
阿新 • • 發佈:2018-12-08
xlwt模組
xlwt模組說明
xlwt是一個庫,用於向舊的Excel檔案(即.xls)寫入資料和格式化資訊。
資料說明
https://xlwt.readthedocs.io/en/latest/
安裝模組
使用pip安裝
pip install xlwt
官方地址
https://pypi.org/project/xlwt/
xlwt.Workbook()引數
引數 | 釋義 |
---|---|
Owner | 設定文件所有者 |
country_code | 國家嗎 |
wnd_protect | 視窗保護 |
obj_protect | 物件保護 |
Protect | 保護 |
backup_on_save | 儲存時備份 |
Hpos | 橫向座標 |
Vpos | 縱向座標 |
Width | 寬度 |
Height | 高度 |
active_sheet | 活動表 |
tab_width | tab寬度 |
wnd_visible | 視窗是否可見 |
wnd_mini | 視窗最小化 |
hscroll_visible | 橫向滾動條是否可見 |
vscroll_visible | 縱向滾動條是否可見 |
tabs_visible | tab是否可見 |
dates_1904 | 是否使用1904日期系統 |
use_cell_values | 單元格的值 |
default_style | 預設樣式 |
colour_RGB | rgb顏色 |
encoding | 指定儲存檔案編碼 |
建立和匯出
import xlwt Excel_obj = xlwt.Workbook(encoding='utf-8') # 建立要匯出的 Excel 表格物件並指定編碼 Excel_tab = Excel_obj.add_sheet('sheet1') # 建立 Excel 表(sheet1為Excel選項卡的表名,並非Excel檔名) Excel_tab.write(0, 2, '我是資料') # 索引第1行,第3列並寫入資料 Excel_obj.save('./Test_Excel.xls') # 儲存匯出 Excel 格式檔案
整個資料庫匯出Excel檔案示例
帶註釋版
【下方有函式版精簡版】
from django.shortcuts import render from APP import models import xlwt def xlwt_test(request): Test_Data = models.Test_Tab.objects.values() # Test_Tab 中的所有資料物件 DATA_title = list(Test_Data[0].keys()) Line_len = len(Test_Data) Col_len = len(DATA_title) print("總資料:", Test_Data) print("資料欄位名:", DATA_title) print("資料總行數:", Line_len) print("資料總列數:", Col_len) Excel_obj = xlwt.Workbook(encoding='utf-8') # 建立要匯出的 Excel 表格物件並指定編碼 Excel_tab = Excel_obj.add_sheet('sheet1') # 建立 Excel 表(sheet1為Excel選項卡的表名,並非Excel檔名) for T in range(0,Col_len): # 列迴圈---便於寫入 SQL欄位[Ecel標題] Excel_tab.write(0, T,DATA_title[T]) print("標題索引列:",T,"當前列名:",DATA_title[T]) for C in range(0, Line_len): # 行迴圈---便於逐行寫入資料 DATA_line = dict(Test_Data[C]) print("########################") print("當前行索引位:", C) print("當前資料庫行資料:",DATA_line) for L in range(0, Col_len): # 行迴圈巢狀列迴圈---便於寫入每個欄位/表格的資料 DATA_field = DATA_title[L] DATA_value = DATA_line.get(DATA_field) Excel_tab.write(C+1,L,DATA_value) print("當前列索引位:", L) print("當前列的欄位名:", DATA_field) print("當前列寫入的資料", DATA_value) Excel_obj.save('./Test_Excel.xls') # 匯出 Excel 格式檔案 return render(request,"dialogue.html",locals())
自定義函式版
直接加對應引數執行即可
引數 | 說明 | 示例 |
---|---|---|
Tab_Data | 資料庫查詢出來的物件 | DATA = models.Test_Tab.objects.values() |
Tab_Name | 匯出的Excel表名稱 | 'sheet1' |
Sav_Path | 匯出的Excel檔案絕對路徑 | './Test_Excel.xls' |
使用示例
Xlwt_Export(Test_Data,'sheet1','./Test_Excel.xls')
函式寫法【不懂請看上方帶註釋版】
# -*- coding:utf8 -*-
import xlwt
def Xlwt_Export(Tab_Data,Tab_Name,Sav_Path):
try:
DATA_title = list(Tab_Data[0].keys())
Line_len = len(Tab_Data)
Col_len = len(DATA_title)
Excel_obj = xlwt.Workbook(encoding='utf-8')
Excel_tab = Excel_obj.add_sheet(Tab_Name)
for T in range(0,Col_len):
Excel_tab.write(0, T,DATA_title[T])
for C in range(0, Line_len):
DATA_line = dict(Tab_Data[C])
for L in range(0, Col_len):
DATA_field = DATA_title[L]
DATA_value = DATA_line.get(DATA_field)
Excel_tab.write(C+1,L,DATA_value)
Excel_obj.save(Sav_Path)
except Exception as e:
print("錯誤資訊:",e)