iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python django导出excel的方法是什么
  • 896
分享到

Python django导出excel的方法是什么

2023-06-25 12:06:01 896人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“python Django导出excel的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python djanGo导出excel的方法是什么”吧!一、基础环境W

这篇文章主要讲解了“python Django导出excel的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python djanGo导出excel的方法是什么”吧!

一、基础环境

WEB架构:前后端分离,前端使用Vue,后端使用django 的rest framework

django版本3.2

django-excel 版本0.0.10

djangorestframework版本3.12.4

二、需求

界面导出excel数据内容

导入model包含外键类型

三、功能实现

不使用序列化类:需要手动实现外键对象转换为外键值

使用序化类:

四、源码

#models.pyfrom django.db import modelsfrom django.utils import timezoneclass MyITtype(models.Model):    name = models.CharField(verbose_name="名称", max_length=128, unique=True)    ittype = models.SmallIntegerField(verbose_name="类型")    comment = models.TextField(verbose_name="备注", blank=True, default="")    def __str__(self):        return self.name    class Meta:        db_table = "MyITtype"        verbose_name = "it资产类型"class MyAsset(models.Model):    ittype = models.ForeignKey(MyITtype, on_delete=models.SET_NULL, verbose_name="产品类型", null=True)    code = models.CharField(verbose_name="资产编码", max_length=128, unique=True)    buytime = models.DateField(verbose_name="入仓时间", default=timezone.now)    usetime = models.DateField(verbose_name="分配时间", default=timezone.now)    comment = models.TextField(verbose_name="规格说明", blank=True, default="")    user = models.CharField(verbose_name="使用人", max_length=128, blank=True, default="")    status = models.IntegerField(verbose_name="状态")    def __str__(self):        return self.code    class Meta:        db_table = "opGTITAsset"        verbose_name = "it固产"

一、序化类实现

#asset-export.pyfrom rest_framework.views import apiViewfrom rest_framework.response import Responsefrom rest_framework.serializers import ModelSerializerfrom .models import MyAssetimport django_excel as excelclass ITAssetSer(ModelSerializer):    class Meta:        model = MyAsset        fields = '__all__'class ITAssetExport(APIView):    """"""    use_model = MyAsset    queryset = use_model.objects.all()    serializer_class = ITAssetSer    def post(self, request, *args, **kwargs):        try:            data = request.data            id_list = data.get("data")            obj_list = self.queryset.all()            # 如果有值,表示导出部分,否则导出全部            if id_list:                obj_list = obj_list.filter(id__in=id_list)            ser = self.serializer_class(instance=obj_list, many=True)            return MakeExcel(obj_list=ser.data, class_name=self.use_model, filename="itasset")        except:            ret = {                "code": 599,                "message": "导出数据出错"            }            return Response(ret)    def get(self, request, *args, **kwargs):        self.Http_method_not_allowed(request, *args, **kwargs)def MakeExcel(obj_list, class_name, filename):    """    制作excel表    :param ser_list: 内容列表    :param class_name: 类名    :param filename: 文件名    :return:    """    meta_fields = class_name._meta.fields    name_list = [field.name for field in meta_fields]    header_list = [field.verbose_name for field in meta_fields]    wdata = [header_list]    for obj in obj_list:        data = [obj[name] for name in name_list]        wdata.append(data)    sheet = excel.pe.Sheet(wdata)    response = excel.make_response(pyexcel_instance=sheet, file_name=filename, file_type="xlsx")    return response

二、手动转换外键实现

#asset-export.pyfrom rest_framework.views import APIViewfrom rest_framework.response import Responsefrom rest_framework.objializers import ModelSerializerfrom .models import MyAssetimport django_excel as excelclass ITAssetSer(ModelSerializer):    class Meta:        model = MyAsset        fields = '__all__'class ITAssetExport(APIView):    """"""    use_model = MyAsset    queryset = use_model.objects.all()    objializer_class = ITAssetSer    def post(self, request, *args, **kwargs):        try:            obj_list = self.use_model.objects.all()            return MakeExcel(obj_list=obj_list, class_name=self.use_model, filename="itasset")        except:            ret = {                "code": 599,                "message": "导出数据出错"            }            return Response(ret)    def get(self, request, *args, **kwargs):        self.http_method_not_allowed(request, *args, **kwargs)def MakeExcel(obj_list, class_name, filename):    """    制作excel表    :param obj_list: 内容列表    :param class_name: 类名    :param filename: 文件名    :return:    """    meta_fields = class_name._meta.fields    name_list = [field.name for field in meta_fields]    header_list = [field.verbose_name for field in meta_fields]    wdata = [header_list] for obj in obj_list:        data = []        for name in name_list:            value = eval("obj." + name)  # 等价于getattr(obj,name),即获取该对象某个字段内容            if isinstance(value, Model):                value = eval("".join(["obj." + name + "_id"]))  # 等价于obj.name_id,即获取该对象中外键对象数值            data.append(value)            # 参考例子            # data = [getattr(obj, name) if name != "ittype" else obj.ittype_id for name in name_list]        wdata.append(data)    sheet = excel.pe.Sheet(wdata)    response = excel.make_response(pyexcel_instance=sheet, file_name=filename, file_type="xlsx")    return response

感谢各位的阅读,以上就是“Python django导出excel的方法是什么”的内容了,经过本文的学习后,相信大家对Python django导出excel的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Python django导出excel的方法是什么

本文链接: https://www.lsjlt.com/news/304531.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python django导出excel的方法是什么
    这篇文章主要讲解了“Python django导出excel的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python django导出excel的方法是什么”吧!一、基础环境w...
    99+
    2023-06-25
  • redis导出到excel的方法是什么
    Redis是一个内存数据库,不直接支持将数据导出到Excel。但是可以通过编写脚本或使用第三方工具将数据从Redis导出到Excel...
    99+
    2023-09-11
    redis
  • Python django导出excel详解
    目录一、基础环境二、需求三、功能实现四、源码一、序化类实现二、手动转换外键实现总结django restframework 导入excel内容,可以查看另外一篇文章 一、基础环境 w...
    99+
    2024-04-02
  • php查询及导出excel的方法是什么
    这篇文章主要介绍“php查询及导出excel的方法是什么”,在日常操作中,相信很多人在php查询及导出excel的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php查询及导出excel的方法是什么...
    99+
    2023-07-05
  • C#中导出Excel并下载的方法是什么
    在C#中,可以使用以下方法将数据导出到Excel并下载:1. 首先,确保你的项目引用了Microsoft.Office.Intero...
    99+
    2023-08-08
    C# Excel
  • MySQL导入Excel的方法是什么
    MySQL不能直接导入Excel文件,但可以通过以下步骤将Excel文件导入MySQL数据库:1. 将Excel文件另存为CSV格式...
    99+
    2023-09-27
    MySQL Excel
  • Springboot实现导入导出Excel的方法
    目录一、添加poi的maven依赖二、自定义注解(Excel属性标题、位置等)三、CustomExcelUtils编写四、定义导出实体类五、Controller层代码编写一、添加po...
    99+
    2024-04-02
  • MySQL导出表的方法是什么
    MySQL导出表的方法有以下几种:1. 使用SELECT INTO OUTFILE语句导出表数据到文件中:```SE...
    99+
    2023-10-12
    MySQL
  • eclipse导出apk的方法是什么
    在Eclipse中导出APK文件的方法如下:1. 打开Eclipse,并选择要导出APK文件的工程。2. 在Eclipse工具栏上选...
    99+
    2023-08-25
    eclipse
  • oracle导出mongodb的方法是什么
    Oracle不直接支持导出数据到MongoDB,因为它们是不同类型的数据库。但是你可以使用一些中间工具来实现将Oracle数据导出到...
    99+
    2023-09-12
    oracle mongodb
  • plsql数据导出导入的方法是什么
    在PL/SQL中,可以使用以下方法导出和导入数据: 使用Oracle Data Pump工具进行导出和导入数据。Oracle D...
    99+
    2024-04-09
    plsql
  • Python操作Excel的方法是什么
    本文小编为大家详细介绍“Python操作Excel的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python操作Excel的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。xlwt 是 Py...
    99+
    2023-06-27
  • Javascript模块导入导出的方法是什么
    这篇“Javascript模块导入导出的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Javascript模块导入...
    99+
    2023-07-04
  • plsql导出数据的方法是什么
    在PL/SQL中,有多种方法可以导出数据,包括使用游标、存储过程、查询和使用工具等。以下是几种常用的导出数据的方法: 使用游标:...
    99+
    2024-04-09
    plsql
  • pycharm导出文件的方法是什么
    PyCharm导出文件的方法有以下几种:1. 使用快捷键:可以使用快捷键(如Ctrl + S)来保存当前编辑的文件。这将把文件保存到...
    99+
    2023-09-29
    pycharm
  • Mysql数据导出的方法是什么
    MySQL数据导出的方法主要有以下几种: 使用命令行工具导出:可以使用mysqldump命令,在命令行中执行类似于以下的命令: ...
    99+
    2023-10-26
    Mysql
  • plsql导出视图的方法是什么
    在PL/SQL中,可以使用以下方法导出视图:1. 使用CREATE VIEW语句创建视图。在PL/SQL中,可以使用CREATE V...
    99+
    2023-09-18
    plsql
  • SQL报表导出的方法是什么
    SQL报表导出的方法有多种,可以根据具体需求选择适合的方法,常见的方法包括:1. 使用数据库工具:常见的数据库工具如MySQL Wo...
    99+
    2023-09-15
    SQL
  • Hive数据导出的方法是什么
    这篇文章主要介绍“Hive数据导出的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Hive数据导出的方法是什么”文章能帮助大家解决问题。一、数据导出是什么hive是一个依赖Hadoop集群...
    99+
    2023-07-06
  • plsql全库导出的方法是什么
    在PL/SQL中,有几种不同的方法可以用于导出整个数据库。 使用Oracle Data Pump实用程序:Oracle Data...
    99+
    2024-02-29
    plsql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作