Skip to content

Commit b8fd0bf

Browse files
committed
fix save_virtual_workbook deprecation in openpyxl
1 parent 87ddcb4 commit b8fd0bf

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

drf_excel/renderers.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import json
22
from collections.abc import Iterable, MutableMapping
3+
from tempfile import NamedTemporaryFile
34
from typing import Dict
45

56
from openpyxl import Workbook
67
from openpyxl.drawing.image import Image
78
from openpyxl.styles import PatternFill
89
from openpyxl.utils import get_column_letter
910
from openpyxl.worksheet.views import SheetView
10-
from openpyxl.writer.excel import save_virtual_workbook
11+
from openpyxl.writer.excel import save_workbook
1112
from rest_framework.fields import (
1213
BooleanField,
1314
DateField,
@@ -213,7 +214,17 @@ def render(self, data, accepted_media_type=None, renderer_context=None):
213214
self.sheet_view_options = get_attribute(drf_view, "sheet_view_options", dict())
214215
self.ws.views.sheetView[0] = SheetView(**self.sheet_view_options)
215216

216-
return save_virtual_workbook(wb)
217+
return self._save_virtual_workbook(wb)
218+
219+
def _save_virtual_workbook(self, wb):
220+
tmp = NamedTemporaryFile()
221+
save_workbook(wb, tmp.name)
222+
223+
tmp.seek(0)
224+
virtual_workbook = tmp.read()
225+
tmp.close()
226+
227+
return virtual_workbook
217228

218229
def _check_validation_data(self, data):
219230
detail_key = "detail"

0 commit comments

Comments
 (0)