Advertisement
naro

XLWT example

Jun 24th, 2014
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.68 KB | None | 0 0
  1. import xlwt
  2.  
  3. XL_DATE_STYLE = xlwt.easyxf(num_format_str='DD.MM.YYYY')
  4. XL_DATETIME_STYLE = xlwt.easyxf(num_format_str='DD.MM.YYYY HH:MM:SS')
  5.  
  6.  
  7. def return_xls():
  8.     stream = StringIO()
  9.  
  10.     wb = xlwt.Workbook(encoding='utf8')
  11.     ws = wb.add_sheet('Sheet 1')
  12.     row_n = col_n = 0
  13.  
  14.     ws.set_panes_frozen(True)  # frozen headings instead of split panes
  15.     ws.set_horz_split_pos(row_n + 1)  # in general, freeze after last heading row
  16.     ws.set_remove_splits(True)  # if user does unfreeze, don't leave a split there
  17.  
  18.     FIELDS = ('col1', 'col2', 'col3', 'col4')
  19.  
  20.     for field in FIELDS:
  21.         ws.write(row_n, col_n, field)
  22.         col_n += 1
  23.  
  24.     number_fields = ('col2',)
  25.     date_fields = ('col3',)
  26.  
  27.     db = MembershipDB()
  28.  
  29.     row_n += 1
  30.     for row in db.get_members():
  31.         col_n = 0
  32.         for field in FIELDS:
  33.             if field == 'password':
  34.                 continue
  35.             if field in date_fields:
  36.                 typ = 'datetime'
  37.             elif field in number_fields:
  38.                 typ = 'number'
  39.             else:
  40.                 typ = ''
  41.             value = row[field]
  42.             if typ == 'datetime':
  43.                 if value:
  44.                     if isinstance(value, basestring):
  45.                         value = DateTime(value, datefmt="en")
  46.                     if value.time == 0.0:
  47.                         format = XL_DATE_STYLE
  48.                     else:
  49.                         format = XL_DATETIME_STYLE
  50.                     ws.write(row_n, col_n, value, format)
  51.             else:
  52.                 ws.write(row_n, col_n, value)
  53.             col_n += 1
  54.         row_n += 1
  55.  
  56.     wb.save(stream)
  57.     return stream.getvalue()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement