zoukankan      html  css  js  c++  java
  • django使用xlwt导出excel文件

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

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

    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  
  • 相关阅读:
    hihocoder 1038
    hihocoder 1039
    poj 2774
    bzoj 4690&&4602
    poj 2417
    STL
    poj 1026
    poj 1064
    poj 1861(prim)
    poj 1129
  • 原文地址:https://www.cnblogs.com/kangoroo/p/7144622.html
Copyright © 2011-2022 走看看