在django里用xlwt作EXCEL导出功能

简介: 参考了以前kevin的代码,搞起来快呀,哈哈哈,,阿里亚多。。。。 代码的意思比较明白,不注释,几乎自解释。。。 就是定义EXCEL时,比较硬生生的,一步一步没有快捷的方法。 另外就是取时间出来时,如果时区不对,就要自已来转换下。

参考了以前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

目录
相关文章
|
2月前
|
Python
Excel中如何批量重命名工作表与将每个工作表导出到单独Excel文件
本文介绍了如何在Excel中使用VBA批量重命名工作表、根据单元格内容修改颜色,以及将工作表导出为独立文件的方法。同时提供了Python实现导出工作表的代码示例,适用于自动化处理Excel文档。
|
7月前
|
文字识别 BI
【图片型PDF】批量识别扫描件PDF指定区域局部位置内容,将识别内容导出Excel表格或批量改名文件,基于阿里云OCR对图片型PDF识别改名案例实现
在医疗和政务等领域,图片型PDF文件(如病历、报告、公文扫描件)的处理需求广泛。通过OCR技术识别这些文件中的文字信息,提取关键内容并保存为表格,极大提高了信息管理和利用效率。本文介绍一款工具——咕嘎批量OCR系统,帮助用户快速处理图片型PDF文件,支持区域识别、内容提取、导出表格及批量改名等功能。下载工具后,按步骤选择处理模式、进行区域采样、批量处理文件,几分钟内即可高效完成数百个文件的处理。
784 8
|
9月前
|
数据可视化 数据处理 Python
使用Pandas实现Excel中的数据透视表功能
本文介绍了如何使用Python的Pandas库实现Excel中的数据透视表功能,包括环境准备、创建模拟销售数据、代码实现及输出等步骤。通过具体示例展示了按地区和销售员汇总销售额的不同方法,如求和、平均值、最大值等,帮助读者掌握Pandas在数据处理上的强大能力。
288 12
|
10月前
|
数据格式 UED
记录一次NPOI库导出Excel遇到的小问题解决方案
【11月更文挑战第16天】本文记录了使用 NPOI 库导出 Excel 过程中遇到的三个主要问题及其解决方案:单元格数据格式错误、日期格式不正确以及合并单元格边框缺失。通过自定义单元格样式、设置数据格式和手动添加边框,有效解决了这些问题,提升了导出文件的质量和用户体验。
773 3
|
10月前
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
189 1
|
10月前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
676 8
|
10月前
|
程序员 API 数据库
Django/Flask深度揭秘:揭秘那些让程序员爱不释手的神奇功能!
在Web开发领域,Django与Flask凭借其独特魅力和强大功能深受程序员喜爱。Django作为全能型框架,以其ORM、模板引擎和丰富的内置功能著称;Flask则以轻量级、灵活的路由系统和强大的扩展生态见长。两者各具特色,为开发者提供了高效、灵活的开发工具。
121 4
|
10月前
|
Java API Apache
|
10月前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
750 4
|
11月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
667 6