首页 > 其他分享 >drf结合rest-pandas实现下载excel文件

drf结合rest-pandas实现下载excel文件

时间:2022-11-17 17:44:08浏览次数:43  
标签:get excel rest pandas kwargs class 下载

目录

drf结合rest-pandas实现下载excel文件

下载rest-pandas

pip install rest-pandas

使用方法

在views.py文件中

from rest_pandas.views import PandasViewBase
from rest_pandas.renderers import PandasExcelRenderer

class TestExcelRenderer(PandasExcelRenderer):
    format = "xls"  # 还可以为xlsx 该参数决定了下载的文件格式,默认不写为csv

    def get_pandas_kwargs(self, data, renderer_context):
        return {"index": False}  # 看下面注意事项


class TestExcelFile(PandasViewBase, ListAPIView):
    serializer_class = TestExcelFileSerializer
    queryset = Book.objects
    renderer_classes = [TestExcelRenderer, ]

    def get_pandas_filename(self, request, format):  # 该方法决定下载的文件名
        return "Test Excel File"

    def list(self, request, *args, **kwargs):
        response = super().list(request, *args, **kwargs)
        return self.update_pandas_headers(response)  # 必须把response传入该方法,不然名字无效

在serializers.py文件中

class TestExcelFileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = "__all__"

打开下载文件

image

注意事项

  • 关于get_pandas_kwargs方法里{"index": False},如果是False, 那么在下载的时候不会带索引,如果为Ture,那么会多出一列索引列,如下图所示

image

  • 不重写get_pandas_filename方法那么文件名就默认为response

  • 要调用update_pandas_headers方法返回数据,不然get_pandas_filename不会生效

  • renderer_classes参数如果不指定,那么默认的效果就是不会加粗的字体,如下图

image

标签:get,excel,rest,pandas,kwargs,class,下载
From: https://www.cnblogs.com/zonghan/p/16900228.html

相关文章

  • phpmyadmin 数据库导出数据到excel(图文版)
    查询到想要的数据后,点击上方或下方的“导出”按钮格式选择“CSVforMSExcel” 如果快速导出的数据乱码,可以选择“导出方式”->“自定义-显示所有可用的选项”。......
  • 批量导入图片--Excel与zip压缩包
    导入excel和图片其实很简单,就是导入包与调用几个简单的方法,主要对接业务操作比较繁琐。在excel中填入图片的名称(不用带后缀)  对应的zip包导入依赖<!--zip......
  • 前端技术实现文件预览(word、excel、pdf、ppt、mp4、图片、文本)
    前端技术实现文件预览(word、excel、pdf、ppt、mp4、图片、文本)前言因为业务需要,很多文件需要在前端实现预览,今天就来了解一下吧。Demo地址[1]:https://zhuye1993.github......
  • vue纯前端导入excel,获取excel的表格数据渲染el-table并纯前端分页实现方法
    因为项目开发的过程中不是所有的表格数据由后台处理返回,因为有些数据不需要在数据库落地,只做前端页面展示并且获取表格的数据上传即可,所以需要前端纯处理excel的数据。第......
  • pandas学习
    #取最大值max=df['code'].max()#某一列在哪一行data["high"].idxmax()#显示所有的列pd.set_option('display.max_columns',None)#显示所有的行pd.set_opti......
  • VAB excel FIND使用
    求:多个表格内容相加公式:=PHONETIC(A2:A7)说明:Phonetic函数只能对字符型内容合并,数字不可以。求:前三位公式:=LEFT(A2,LEN(A2)-8)说明:LEN计算出总长......
  • excel vlookup函数的使用方法
    1.语法说明 参数说明Lookup_value为需要在数据表第一列中进行查找的值。Lookup_value可以为数值、引用或文本字符串。当vlookup函数第一参数省略查找值时,表示用0查......
  • Forest请求前置操作RSA签名加密
    前言在很多时候为了安全需要将请求的参数签名签名加密,使用非对称加密-RSA,非对称加密有供钥和私钥两个概念,私钥自己拥有,不能给别人,公钥公开,根据应用的不同,我们可以选择不同......
  • 【王喆-推荐系统】前沿篇-(task2)GNN在Pinterest的应用
    学习总结(1)GraphSAGE的主要步骤是三步“采样-聚合-预测”:采样是指在整体图数据上随机确定中心节点,采样k阶子图样本。聚合是指利用GNN把k阶子图样本聚合成中心节点......
  • CodeForces - 212E IT Restaurants
    题意:给一棵树的结点染色,每个结点可以染红色、蓝色或不染色。相邻两个结点必须染同一种颜色,或者一个染色一个不染色。求整棵树染色结点最多,且在整棵树至少有一个结点染红色,......