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)
相关文章
相关标签/搜索