6
6
from openpyxl .drawing .image import Image
7
7
from openpyxl .styles import PatternFill
8
8
from openpyxl .utils import get_column_letter
9
+ from openpyxl .worksheet .views import SheetView
9
10
from openpyxl .writer .excel import save_virtual_workbook
10
11
from rest_framework .fields import (
11
12
BooleanField ,
29
30
XLSXListField ,
30
31
XLSXNumberField ,
31
32
)
32
- from drf_excel .utilities import XLSXStyle , set_cell_style
33
-
34
-
35
- def get_attribute (get_from , prop_name , default = None ):
36
- """
37
- Get attribute from object with name <prop_name>, or take it from function get_<prop_name>
38
- :param get_from: instance of object
39
- :param prop_name: name of attribute (str)
40
- :param default: what to return if attribute doesn't exist
41
- :return: value of attribute <prop_name> or default
42
- """
43
- prop = getattr (get_from , prop_name , None )
44
- if not prop :
45
- prop_func = getattr (get_from , "get_{}" .format (prop_name ), None )
46
- if prop_func :
47
- prop = prop_func ()
48
- if prop is None :
49
- prop = default
50
- return prop
33
+ from drf_excel .utilities import XLSXStyle , get_attribute , set_cell_style
51
34
52
35
53
36
class XLSXRenderer (BaseRenderer ):
@@ -64,9 +47,9 @@ class XLSXRenderer(BaseRenderer):
64
47
column_data_styles = None
65
48
custom_mappings = None
66
49
custom_cols = None
67
- sanitize_fields = True # prepend possibly malicious values with "'"
68
50
list_sep = ", "
69
51
body_style = None
52
+ sheet_view_options = {}
70
53
71
54
def render (self , data , accepted_media_type = None , renderer_context = None ):
72
55
"""
@@ -222,6 +205,15 @@ def render(self, data, accepted_media_type=None, renderer_context=None):
222
205
self ._make_body (body , row , row_count )
223
206
row_count += 1
224
207
208
+ # Set sheet view options
209
+ # Example:
210
+ # sheet_view_options = {
211
+ # 'rightToLeft': True,
212
+ # 'showGridLines': False
213
+ # }
214
+ self .sheet_view_options = get_attribute (drf_view , "sheet_view_options" , dict ())
215
+ self .ws .views .sheetView [0 ] = SheetView (** self .sheet_view_options )
216
+
225
217
return save_virtual_workbook (wb )
226
218
227
219
def _check_validation_data (self , data ):
0 commit comments