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);
    }
  • 相关阅读:
    自定义时间工具类
    http和https
    客户端是什么意思
    19.在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?)写出http常见的状态码和含义,至少5个.[完善题目]
    20.谈谈对mvc的认识。
    18.有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?
    17.如何修改SESSION的生存时间。
    16.语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?
    14.对于大流量的网站,您采用什么样的方法来解决访问量问题?
    15.用PHP写出显示客户端IP与服务器IP的代码,如何防止用户使用代理的情况?[添加更多详情]
  • 原文地址:https://www.cnblogs.com/linkenpark/p/9623566.html
Copyright © 2011-2022 走看看