• 技术文章 >Python框架 >Django

    Django中如何用xlwt生成表格

    2020-11-05 15:46:24原创4936

    同样是做表格,但是有些人的表格就做的很好看。融合了之前所学不同模块的知识,来讲讲Django中生成表格的特殊方法。

    这里只是mark一下导出的方法,并没有做什么REST处理和异常处理。

    维护统一的style样式,可以使导出的数据更加美观。


    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    <p style="line-height: 1.75em;"><span style="font-family: 微软雅黑, "Microsoft YaHei"; font-size: 14px;">def export_excel(request): 

        # 设置HttpResponse的类型

        response = HttpResponse(content_type='application/vnd.ms-excel'

        response['Content-Disposition'] = 'attachment;filename=user.xls' 

        # new一个文件

        wb = xlwt.Workbook(encoding = 'utf-8') 

        # new一个sheet

        sheet = wb.add_sheet(u'人员表单')

        # 维护一些样式, style_heading, style_body, style_red, style_green

       style_heading = xlwt.easyxf("""

            font:

                name Arial,

                colour_index white,

                bold on,

                height 0xA0;

            align:

                wrap off,

                vert center,

                horiz center;

            pattern:

                pattern solid,

                fore-colour 0x19;

            borders:

                left THIN,

                right THIN,

                top THIN,

                bottom THIN;

            """

        )

        style_body = xlwt.easyxf("""

            font:

                name Arial,

                bold off,

                height 0XA0;

            align:

                wrap on,

                vert center,

                horiz left;

            borders:

                left THIN,

                right THIN,

                top THIN,

                bottom THIN;

            """

        )

        style_green = xlwt.easyxf(" pattern: pattern solid,fore-colour 0x11;")

        style_red = xlwt.easyxf(" pattern: pattern solid,fore-colour 0x0A;")

        fmts = [

            'M/D/YY',

            'D-MMM-YY',

            'D-MMM',

            'MMM-YY',

            'h:mm AM/PM',

            'h:mm:ss AM/PM',

            'h:mm',

            'h:mm:ss',

            'M/D/YY h:mm',

            'mm:ss',

            '[h]:mm:ss',

            'mm:ss.0',

        ]

        style_body.num_format_str = fmts[0]

     

        # 写标题栏

        sheet.write(0,0, '姓名', style_heading) 

        sheet.write(0,1, '英文名', style_heading) 

        sheet.write(0,2, '职位', style_heading) 

        sheet.write(0,3, '公司电话', style_heading) 

        sheet.write(0,4, '手机', style_heading) 

        sheet.write(0,5, 'QQ', style_heading) 

        sheet.write(0,6, 'MSN', style_heading) 

        sheet.write(0,7, 'Email', style_heading) 

        sheet.write(0,8, '办公地点', style_heading) 

        sheet.write(0,9, '部门', style_heading)

        sheet.write(0,10, '人员状态', style_heading)

          

        # 写数据

        row = 1 

        for usa in employesInfo.objects.all():

            sheet.write(row,0, usa.name, style_body)

            sheet.write(row,1, usa.eName, style_body)

            sheet.write(row,2, usa.postion, style_body)

            sheet.write(row,3, usa.cPhone, style_body)

            sheet.write(row,4, usa.pPhone, style_body)

            sheet.write(row,5, usa.qq, style_body)

            sheet.write(row,6, usa.msn, style_body)

            sheet.write(row,7, usa.email, style_body)

            sheet.write(row,8, usa.offAreas, style_body)

            sheet.write(row,9, usa.depart, style_body)

            if int(usa.status) == 1:

                sheet.write(row,10, '在职',style_green)

            else:

                sheet.write(row,10,'离职', style_red)

            row=row + 1 

         

        # 写出到IO

        output = StringIO.StringIO()

        wb.save(output)

        # 重新定位到开始

        output.seek(0)

        response.write(output.getvalue()) 

        return response<br></span></p>


    以上就是Django中用xlwt生成表格的方法。更多Python学习推荐:PyThon学习网教学中心

    专题推荐:xlwt生成表格;django
    上一篇:Django中的ORM之查 下一篇:Django中如何用xlwt导出文件

    相关文章推荐

    • Django实现内容缓存• Django中的ORM之查• pycharm新建django项目时报错• pycharm不支持django的解决方法• Python中xlwt如何设置单元格格式• Python实用之xlwt单元格中加超链接• Python中xlwt如何访问工作表• Python实用:用xlwt设置表格列宽和行高• Python之xlwt和xlrd如何新建sheet• Python中如何用xlwt录入表格日期

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网