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

xlwt模塊

xlwt模塊說明

xlwt是一個庫,用於向舊的Excel文件(即.xls)寫入數據和格式化信息。html

資料說明數據庫

https://xlwt.readthedocs.io/en/latest/

安裝模塊

使用pip安裝django

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())

自定義函數版

直接加對應參數執行便可code

參數 說明 示例
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')

函數寫法【不懂請看上方帶註釋版】htm

# -*- 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)
相關文章
相關標籤/搜索