Python模塊-xlwt模塊 Django從數據庫導出Excel

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_widthtab寬度
wnd_visible窗口是否可見
wnd_mini窗口最小化
hscroll_visible橫向滾動條是否可見
vscroll_visible縱向滾動條是否可見
tabs_visibletab是否可見
dates_1904是否使用1904日期系統
use_cell_values單元格的值
default_style默認樣式
colour_RGBrgb顏色
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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章