• 态度+坚持是质变的利器 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)
     
  • 相关阅读:
    eval命令的使用
    declare与typeset的使用
    【线型DP模板】最上上升子序列(LIS),最长公共子序列(LCS),最长公共上升子序列(LCIS)
    【线型DP】【LCS】UVA_10635 Prince and Princess
    【经典DP】洛谷 P2782 友好城市
    HDU-1051/POJ-1065 Wooden sticks 木棍子(动态规划 LIS 线型动归)
    BZOJ3659 Which Dreamed It
    CF300D Painting Square
    CF632E Thief in a Shop 和 CF958F3 Lightsabers (hard)
    CF528D Fuzzy Search 和 BZOJ4259 残缺的字符串
  • 原文地址:https://www.cnblogs.com/ruiy/p/14918961.html
Copyright © 2020-2023  润新知