Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import xlwt
- XL_DATE_STYLE = xlwt.easyxf(num_format_str='DD.MM.YYYY')
- XL_DATETIME_STYLE = xlwt.easyxf(num_format_str='DD.MM.YYYY HH:MM:SS')
- def return_xls():
- stream = StringIO()
- wb = xlwt.Workbook(encoding='utf8')
- ws = wb.add_sheet('Sheet 1')
- row_n = col_n = 0
- ws.set_panes_frozen(True) # frozen headings instead of split panes
- ws.set_horz_split_pos(row_n + 1) # in general, freeze after last heading row
- ws.set_remove_splits(True) # if user does unfreeze, don't leave a split there
- FIELDS = ('col1', 'col2', 'col3', 'col4')
- for field in FIELDS:
- ws.write(row_n, col_n, field)
- col_n += 1
- number_fields = ('col2',)
- date_fields = ('col3',)
- db = MembershipDB()
- row_n += 1
- for row in db.get_members():
- col_n = 0
- for field in FIELDS:
- if field == 'password':
- continue
- if field in date_fields:
- typ = 'datetime'
- elif field in number_fields:
- typ = 'number'
- else:
- typ = ''
- value = row[field]
- if typ == 'datetime':
- if value:
- if isinstance(value, basestring):
- value = DateTime(value, datefmt="en")
- if value.time == 0.0:
- format = XL_DATE_STYLE
- else:
- format = XL_DATETIME_STYLE
- ws.write(row_n, col_n, value, format)
- else:
- ws.write(row_n, col_n, value)
- col_n += 1
- row_n += 1
- wb.save(stream)
- return stream.getvalue()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement