{"id":21182,"library":"drf-excel","title":"DRF Excel Renderer","description":"Django REST Framework renderer for generating Excel spreadsheet (.xlsx) files from DRF responses using OpenPyXL. Current version 2.5.3, requires Python >=3.9, DRF >=3.14. Release cadence: irregular, with maintenance updates and occasional bug fixes.","status":"active","version":"2.5.3","language":"python","source_language":"en","source_url":"https://github.com/django-commons/drf-excel","tags":["django","django-rest-framework","excel","openpyxl","renderer"],"install":[{"cmd":"pip install drf-excel","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required, version >=3.14","package":"djangorestframework","optional":false},{"reason":"Required for Excel generation","package":"openpyxl","optional":false}],"imports":[{"wrong":"from drf_excel.renderers import XLSXFileRenderer","symbol":"XLSXFileRenderer","correct":"from drf_excel.renderers import XLSXFileRenderer"}],"quickstart":{"code":"from rest_framework import viewsets\nfrom drf_excel.renderers import XLSXFileRenderer\nfrom drf_excel.mixins import XLSXMixin\nfrom myapp.models import MyModel\nfrom myapp.serializers import MySerializer\n\nclass MyViewSet(XLSXMixin, viewsets.ModelViewSet):\n    queryset = MyModel.objects.all()\n    serializer_class = MySerializer\n    renderer_classes = [XLSXFileRenderer]\n    filename = 'my_export.xlsx'\n    \n    def get_queryset(self):\n        # Add filtering if needed\n        return super().get_queryset().filter(is_active=True)","lang":"python","description":"Basic usage: mixin + renderer, minimal setup."},"warnings":[{"fix":"Upgrade to DRF >=3.14 and replace NullBooleanField with BooleanField(null=True).","message":"Version 2.2.0 removed NullBooleanField and requires DRF >=3.14. Upgrade from older versions may break if using NullBooleanField or older DRF.","severity":"breaking","affected_versions":"<2.2.0"},{"fix":"Disable pagination for the export endpoint, or override list() to return the entire queryset.","message":"Pagination can break the renderer if your view uses pagination. The renderer expects the full list, not a paginated response.","severity":"gotcha","affected_versions":"all"},{"fix":"Upgrade to drf-excel >=2.4.0 for lazy translation support.","message":"If you use `_lazy` translations in serializer fields, they may not be rendered correctly in Excel without special handling.","severity":"gotcha","affected_versions":"<2.4.0"}],"env_vars":null,"search_vec":"'2.5.3':21 '3.14':26 '3.9':24 'bug':35 'cadenc':28 'current':19 'django':4,37,39 'django-rest-framework':38 'drf':1,15,25 'excel':2,10,42 'file':13 'fix':36 'framework':6,41 'generat':9 'irregular':29 'mainten':31 'occasion':34 'openpyxl':18,43 'python':23 'releas':27 'render':3,7,44 'requir':22 'respons':16 'rest':5,40 'spreadsheet':11 'updat':32 'use':17 'version':20 'xlsx':12","created_at":"2026-04-27T16:58:30.664826+00:00","updated_at":"2026-04-27T16:58:30.664826+00:00","problems":{"verify_error":"Traceback (most recent call last):\n  File \"<string>\", line 1, in <module>\n  File \"/tmp/tmprwjm79fr/venv/lib/python3.12/site-packages/drf_excel/renderers.py\", line 23, in <module>\n    from rest_framework.renderers import BaseRenderer\n  File \"/tmp/tmprwjm79fr/venv/lib/python3.12/site-packages/rest_fra"},"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"2.5.3","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/django-commons/drf-excel","docs":"https://github.com/django-commons/drf-excel/","changelog":null,"pypi":"https://pypi.org/project/drf-excel/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["web-framework"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"import_fail","verified_at":"2026-07-03","last_verified":"2026-07-03","next_check":"2026-07-10","install_tag":null}}