From b8fd0bf9a26c87461bb5a7a96a5010b40c2f9240 Mon Sep 17 00:00:00 2001 From: Alberto Sanchez Date: Wed, 1 Feb 2023 05:29:41 -0300 Subject: [PATCH] fix save_virtual_workbook deprecation in openpyxl --- drf_excel/renderers.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drf_excel/renderers.py b/drf_excel/renderers.py index 4375292..1617a2a 100644 --- a/drf_excel/renderers.py +++ b/drf_excel/renderers.py @@ -1,5 +1,6 @@ import json from collections.abc import Iterable, MutableMapping +from tempfile import NamedTemporaryFile from typing import Dict from openpyxl import Workbook @@ -7,7 +8,7 @@ from openpyxl.styles import PatternFill from openpyxl.utils import get_column_letter from openpyxl.worksheet.views import SheetView -from openpyxl.writer.excel import save_virtual_workbook +from openpyxl.writer.excel import save_workbook from rest_framework.fields import ( BooleanField, DateField, @@ -213,7 +214,17 @@ def render(self, data, accepted_media_type=None, renderer_context=None): self.sheet_view_options = get_attribute(drf_view, "sheet_view_options", dict()) self.ws.views.sheetView[0] = SheetView(**self.sheet_view_options) - return save_virtual_workbook(wb) + return self._save_virtual_workbook(wb) + + def _save_virtual_workbook(self, wb): + tmp = NamedTemporaryFile() + save_workbook(wb, tmp.name) + + tmp.seek(0) + virtual_workbook = tmp.read() + tmp.close() + + return virtual_workbook def _check_validation_data(self, data): detail_key = "detail"