zoukankan      html  css  js  c++  java
  • 【django】 django后台管理 导出excel表

    from django.contrib import admin
    
    # Register your models here.
    import xlwt
    from django.http import HttpResponse
    
    from dal import models
    # Register your models here.
    
    from openpyxl import Workbook
    
    
    class FundAdmin(admin.ModelAdmin):
        actions = ["export_as_excel"]
        list_display = ('title', 'name','type','unit','status','create_time')
        list_filter = ['title', 'name','type','unit','status','create_time',]
    
    
        def export_as_excel(self, request, queryset):
            print("queryset",queryset)
            meta = self.model._meta  # 用于定义文件名, 格式为: app名.模型类名
            print("meta",meta)
            field_names = [field.name for field in meta.fields]  # 模型所有字段名
    
            response = HttpResponse(content_type='application/msexcel')  # 定义响应内容类型
            response['Content-Disposition'] = f'attachment; filename={meta}.xlsx'  # 定义响应数据格式
            wb = Workbook()  # 新建Workbook
            ws = wb.active  # 使用当前活动的Sheet表
            ws.append(field_names)  # 将模型字段名作为标题写入第一行
            for obj in queryset:  # 遍历选择的对象列表
                print(obj)
                for field in field_names:
    
                    data = [f'{getattr(obj, field)}' for field in field_names]  # 将模型属性值的文本格式组成列表
    
                ws.append(data)  # 写入模型属性值
            wb.save(response)  # 将数据存入响应内容
            return response
    
    
        export_as_excel.short_description = '导出Excel'  # 该动作在admin中的显示文字
    
    
    
    admin.site.register(models.Fund, FundAdmin)
  • 相关阅读:
    《Android 4游戏高级编程(第2版)》书评
    push研究——Apache Mina探索初步
    Android UI开发第二十三篇——分享书架UI实现
    cookie学习总结
    Web.xml配置详解
    Java序列化的机制和原理
    Java高级技术(汇总中...)
    [Java]HashMap的两种排序方式
    jdk与jre的区别
    DM,NLP常用算法汇总
  • 原文地址:https://www.cnblogs.com/wanghong1994/p/12656817.html
Copyright © 2011-2022 走看看