zoukankan      html  css  js  c++  java
  • python通过xlwt模块直接在网页上生成excel文件并下载

    urls:

    from django.conf.urls import url, include
    from . import views
    
    urlpatterns = [
    ...
        url(r'^domains/_export_dns.html', views.export_dns, name='export_dns'),
    ...
    ]

    view:

    import xlrd, xlwt
    
    def set_style(name, height, bold=False):
        """
        excel样式
        :param name: 字体名
        :param height: 调度
        :param bold: 边框
        :return:
        """
        style = xlwt.XFStyle()  # 初始化样式
        font = xlwt.Font()  # 为样式创建字体
        font.name = name  # 'Times New Roman'
        font.bold = bold
        font.color_index = 000
        font.height = height
        style.font = font
    
        # 设置单元格边框
        # borders= xlwt.Borders()
        # borders.left= 6
        # borders.right= 6
        # borders.top= 6
        # borders.bottom= 6
        # style.borders = borders
    
        # 设置单元格背景颜色
        # pattern = xlwt.Pattern()
        # 设置其模式为实型
        # pattern.pattern = pattern.SOLID_PATTERN
        # 设置单元格背景颜色
        # pattern.pattern_fore_colour = 0x00
        # style.pattern = pattern
    
        return style
    
    @login_required
    def export_dns(req):
        """
        导出DNS解析记录
        :param req:
        :return:
        """
    
        if req.method == 'GET':
            data = req.GET.get('data')
            data = json.loads(data)
    
            zone_tag_obj = models.ZoneTag.objects.get(zone_name=data['zone'])
            record_obj_list = zone_tag_obj.ZoneTag_Record.filter( ~Q(type='SOA') )
    
            response = HttpResponse(content_type='application/ms-excel')
            response['Content-Disposition'] = 'attachment; filename="%s.xls"' %(data['zone'])
    
            book = xlwt.Workbook(encoding='utf-8')
            sheet = book.add_sheet('Sheet1', cell_overwrite_ok=True)
            row0 = ['主机记录', '记录类型', '解析线路', '记录值', 'MX优先级', 'TTL', '状态', '备注']
            # 设置列宽
            sheet.col(0).width = 6000
            sheet.col(1).width = 3000
            sheet.col(2).width = 3000
            sheet.col(3).width = 6000
            sheet.col(4).width = 3000
            sheet.col(5).width = 3000
            sheet.col(6).width = 3000
            sheet.col(7).width = 12000
            for i in range(0, len(row0)):
                sheet.write_merge(0, 0, i, i, row0[i], set_style('Times New Roman', 220, True))
    
            for k, v in enumerate(record_obj_list, start=1):
                sheet.write(k, 0, v.host)
                sheet.write(k, 1, v.type )
                sheet.write(k, 2, v.resolution_line )
                sheet.write(k, 3, v.data )
                sheet.write(k, 4, v.mx_priority )
                sheet.write(k, 5, v.ttl)
                sheet.write(k, 6, v.status)
                sheet.write(k, 7, v.comment )
    
            book.save(response)
    
            return response
        elif req.method == 'POST':
            msg = {'status': 200}
            return HttpResponse(json.dumps(msg))

    js:

    function ExportDnsRecordACK(){
        // 确认导出DNS解析记录
        var _export_dns_record_type = $("select[name=export_dns_record_type]")[0].value.trim();
        var _zone = $("#ExportDnsRecordModalLabel h4").attr('domain')
        var __data = {'data': _export_dns_record_type, 'zone':_zone}
    
        var url = "/domains/_export_dns.html?data=" + JSON.stringify(__data);
    
        $.ajax({
            url: "/domains/_export_dns.html",
            type: "POST",        //请求类型
            data: {},
            //async : false,
            dataType: "json",
            //beforeSend:function(XMLHttpRequest){
            //    // 请求前执行
            //},
            success: function (response, status, request) {
                //当向服务端发起的请求执行成功完成后,自动调用
                if(request['status'] == 200){
                    $('#ExportDnsRecordModalLabel').modal('hide');
                    window.location.href = url;     //下载文件
                }
            },
            error: function () {
                //当请求错误之后,自动调用
            }
        });
    }
    
    
    $(document).ready(function(){
        // 确认 导出DNS解析记录
        $(document).on("click", 'button[name=_export_dns_record_ok]', ExportDnsRecordACK);
    }
  • 相关阅读:
    反向代理实例
    nginx常用命令和配置
    nginx的安装
    Can Live View boot up images acquired from 64bit OS evidence?
    What is the behavior of lnk files?
    EnCase v7 search hits in compound files?
    How to search compound files
    iOS 8.3 JB ready
    Sunglasses
    现代福尔摩斯
  • 原文地址:https://www.cnblogs.com/linkenpark/p/9623566.html
Copyright © 2011-2022 走看看