参考了以前kevin的代码,搞起来快呀,哈哈哈,,阿里亚多。。。。

代码的意思比较明白,不注释,几乎自解释。。。

就是定义EXCEL时,比较硬生生的,一步一步没有快捷的方法。

另外就是取时间出来时,如果时区不对,就要自已来转换下。另外,数字型之类的要转换为字符型,不然,又会出错。。。

def ExportContentByJiraVersion(request, site_name=None, jira_version=None):
    response = HttpResponse(content_type='application/vnd.ms-excel')
    response[
        'Content-Disposition'] = 'attachment;filename={0}-{1}.xls'.format(site_name, jira_version)
    wb = xlwt.Workbook(encoding='utf-8')
    sheet_prd = wb.add_sheet('PRD')
    sheet_uat = wb.add_sheet('UAT')
    sheet_fat = wb.add_sheet('FAT')

    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]
    # 1st line
    sheet_prd.write(0, 0, '发布单', style_heading)
    sheet_prd.write(0, 1, '组件', style_heading)
    sheet_prd.write(0, 2, '环境', style_heading)
    sheet_prd.write(0, 3, '进度', style_heading)
    sheet_prd.write(0, 4, 'JIRA问题号', style_heading)
    sheet_prd.write(0, 5, '操作用户', style_heading)
    sheet_prd.write(0, 6, '时间', style_heading)

    row = 1
    contents = XXX.objects.filter(site_name__name=site_name).filter(jira_issue_version=jira_version)\
        .filter(deploy_status='PRD')
    for content in contents:
        sheet_prd.write(row, 0, content.name, style_body)
        sheet_prd.write(row, 1, content.app_name.name, style_body)
        sheet_prd.write(row, 2, content.deploy_status, style_body)
        if content.deploy_progress == u'已发布':
            sheet_prd.write(row, 3, content.deploy_progress, style_green)
        else:
            sheet_prd.write(row, 3, content.deploy_progress, style_red)
        sheet_prd.write(row, 4, content.jira_issue_no, style_body)
        sheet_prd.write(row, 5, str(content.create_user), style_body)
        sheet_prd.write(row, 6, str(content.change_date + timedelta(hours=8)), style_body)

        # 第一行加宽
        sheet_prd.col(0).width = 100 * 50
        sheet_prd.col(1).width = 200 * 50
        sheet_prd.col(2).width = 50 * 50
        sheet_prd.col(3).width = 50 * 50
        sheet_prd.col(4).width = 200 * 50
        sheet_prd.col(5).width = 50 * 50
        sheet_prd.col(6).width = 200 * 50
        row += 1

    # 1st line
    sheet_uat.write(0, 0, '发布单', style_heading)
    sheet_uat.write(0, 1, '组件', style_heading)
    sheet_uat.write(0, 2, '环境', style_heading)
    sheet_uat.write(0, 3, '进度', style_heading)
    sheet_uat.write(0, 4, 'JIRA问题号', style_heading)
    sheet_uat.write(0, 5, '操作用户', style_heading)
    sheet_uat.write(0, 6, '时间', style_heading)

    row = 1
    contents = XXX.objects.filter(site_name__name=site_name).filter(jira_issue_version=jira_version)\
        .filter(deploy_status='UAT')
    for content in contents:
        sheet_uat.write(row, 0, content.name, style_body)
        sheet_uat.write(row, 1, content.app_name.name, style_body)
        sheet_uat.write(row, 2, content.deploy_status, style_body)
        if content.deploy_progress == u'已发布':
            sheet_uat.write(row, 3, content.deploy_progress, style_green)
        else:
            sheet_uat.write(row, 3, content.deploy_progress, style_red)
        sheet_uat.write(row, 4, content.jira_issue_no, style_body)
        sheet_uat.write(row, 5, str(content.create_user), style_body)
        sheet_uat.write(row, 6, str(content.change_date + timedelta(hours=8)), style_body)

        # 第一行加宽
        sheet_uat.col(0).width = 100 * 50
        sheet_uat.col(1).width = 200 * 50
        sheet_uat.col(2).width = 50 * 50
        sheet_uat.col(3).width = 50 * 50
        sheet_uat.col(4).width = 200 * 50
        sheet_uat.col(5).width = 50 * 50
        sheet_uat.col(6).width = 200 * 50
        row += 1

    output = StringIO.StringIO()
    wb.save(output)
    output.seek(0)
    response.write(output.getvalue())
    return response

最新文章

  1. mysql 5.7.11 yum 安装步骤
  2. MongoDB查询重复记录并保存到文件csv
  3. Struts2 自定义拦截器
  4. iOS学习资源个人整理
  5. 在腾讯云上创建您的SQL Cluster(4)
  6. source insight 相对路径
  7. OpenXml 入门----OpenXml Tools使用技巧
  8. LeetCode14 Longest Common Prefix
  9. Selenium webdriver 之select 控件封装,解决onchange问题
  10. Ext.Net 问题收集
  11. 一种通用数据采集的schema定义形式
  12. DJANGO用户名认证一例
  13. Android服务之AIDL
  14. MEF初体验之五:Lazy Exports
  15. F#周报2019年第12期
  16. confluence 5.8.6升级到5.10.1
  17. Vue:Promise概要
  18. angular中使用ckplayer播放器
  19. Android性能优化工具之Systrace
  20. 交互神器-最好用的Mac原型设计工具

热门文章

  1. DStream 转换操作------有状态转换操作
  2. Java数组去重(利用数组,不借助集合)
  3. [转]linux sudo 命令
  4. MVC系列学习(八)-分布视图
  5. python框架之虚拟环境的配置
  6. Html常用标签及全称
  7. C#入门经典 Chapter4 流程控制
  8. js indexOf 列表筛选
  9. JS高级——扩展内置对象的方法
  10. dotfuscator 如何设置