态度+坚持是质变的利器 django db数据库导出到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_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 指定存储文件编码

创建和导出

  1.  
    import xlwt
  2.  
     
  3.  
    Excel_obj = xlwt.Workbook(encoding='utf-8') # 创建要导出的 Excel 表格对象并指定编码
  4.  
    Excel_tab = Excel_obj.add_sheet('sheet1') # 创建 Excel 表(sheet1为Excel选项卡的表名,并非Excel文件名)
  5.  
    Excel_tab.write(0, 2, '我是数据') # 索引第1行,第3列并写入数据
  6.  
     
  7.  
    Excel_obj.save('./Test_Excel.xls') # 保存导出 Excel 格式文件

整个数据库导出Excel文件示例

带注释版

【下方有函数版精简版】

  1.  
    from django.shortcuts import render
  2.  
    from APP import models
  3.  
    import xlwt
  4.  
     
  5.  
    def xlwt_test(request):
  6.  
    Test_Data = models.Test_Tab.objects.values() # Test_Tab 中的所有数据对象
  7.  
     
  8.  
    DATA_title = list(Test_Data[0].keys())
  9.  
    Line_len = len(Test_Data)
  10.  
    Col_len = len(DATA_title)
  11.  
     
  12.  
    print("总数据:", Test_Data)
  13.  
     
  14.  
    print("数据字段名:", DATA_title)
  15.  
    print("数据总行数:", Line_len)
  16.  
    print("数据总列数:", Col_len)
  17.  
     
  18.  
    Excel_obj = xlwt.Workbook(encoding='utf-8') # 创建要导出的 Excel 表格对象并指定编码
  19.  
    Excel_tab = Excel_obj.add_sheet('sheet1') # 创建 Excel 表(sheet1为Excel选项卡的表名,并非Excel文件名)
  20.  
     
  21.  
    for T in range(0,Col_len): # 列循环---便于写入 SQL字段[Ecel标题]
  22.  
    Excel_tab.write(0, T,DATA_title[T])
  23.  
    print("标题索引列:",T,"当前列名:",DATA_title[T])
  24.  
    for C in range(0, Line_len): # 行循环---便于逐行写入数据
  25.  
    DATA_line = dict(Test_Data[C])
  26.  
    print("########################")
  27.  
    print("当前行索引位:", C)
  28.  
    print("当前数据库行数据:",DATA_line)
  29.  
     
  30.  
    for L in range(0, Col_len): # 行循环嵌套列循环---便于写入每个字段/表格的数据
  31.  
    DATA_field = DATA_title[L]
  32.  
    DATA_value = DATA_line.get(DATA_field)
  33.  
    Excel_tab.write(C+1,L,DATA_value)
  34.  
     
  35.  
    print("当前列索引位:", L)
  36.  
    print("当前列的字段名:", DATA_field)
  37.  
    print("当前列写入的数据", DATA_value)
  38.  
     
  39.  
    Excel_obj.save('./Test_Excel.xls') # 导出 Excel 格式文件
  40.  
    return render(request,"dialogue.html",locals())
  41.  
     

自定义函数版

直接加对应参数执行即可

参数说明示例
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')

函数写法【不懂请看上方带注释版】

  1.  
    # -*- coding:utf8 -*-
  2.  
    import xlwt
  3.  
    def Xlwt_Export(Tab_Data,Tab_Name,Sav_Path):
  4.  
    try:
  5.  
    DATA_title = list(Tab_Data[0].keys())
  6.  
    Line_len = len(Tab_Data)
  7.  
    Col_len = len(DATA_title)
  8.  
    Excel_obj = xlwt.Workbook(encoding='utf-8')
  9.  
    Excel_tab = Excel_obj.add_sheet(Tab_Name)
  10.  
    for T in range(0,Col_len):
  11.  
    Excel_tab.write(0, T,DATA_title[T])
  12.  
    for C in range(0, Line_len):
  13.  
    DATA_line = dict(Tab_Data[C])
  14.  
    for L in range(0, Col_len):
  15.  
    DATA_field = DATA_title[L]
  16.  
    DATA_value = DATA_line.get(DATA_field)
  17.  
    Excel_tab.write(C+1,L,DATA_value)
  18.  
    Excel_obj.save(Sav_Path)
  19.  
    except Exception as e:
  20.  
    print("错误信息:",e)
 
原文地址:https://www.cnblogs.com/ruiy/p/14918961.html