Coverage for lino/modlib/export_excel/models.py : 49%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# -*- coding: UTF-8 -*- # Copyright 2014-2015 Josef Kejzlar, Luc Saffre # License: BSD (see file COPYING for details)
"""
self.ar = ar
# Internal iterator self.column = None self.row = None
return self.ar.get_field_info()
return self.ar.data_iterator
def title(self): return self.ar.get_title()
def columns(self): for column in zip(*self.get_columns()): self.column = column yield self.column
def rows(self): for row in self.get_rows(): self.row = row yield row
def value(self): return self.column[0].field._lino_atomizer.full_value_from_object(self.row, self.ar)
def value_as_text(self): return self.column[0].format_value(self.ar, self.value)
def value_as_html(self): return self.column[0].value2html(self.ar, self.value)
def column_name(self): return self.column[1]
def column_width(self): return self.column[2]
s = s[:31] for c in u"[]:\\?/*\x00": s = s.replace(c, '_') return s
workbook = xlwt.Workbook(encoding='utf-8')
sheet = workbook.add_sheet(sheet_name(self.title))
header_style = xlwt.easyxf("font: bold on;") for c, column in enumerate(self.columns): sheet.write(0, c, self.column_name, header_style) sheet.col(c).width = min(256 * self.column_width / 7, 65535) # 256 == 1 character width, max width=65535
for c, column in enumerate(self.columns): for r, row in enumerate(self.rows, start=1): try: value = self.value style = self.default_style
if isinstance(value, datetime.date): style = self.date_style
if isinstance(value, datetime.datetime): style = self.datetime_style
if isinstance(value, datetime.time): style = self.time_style
sheet.write(r, c, value, style=style) except Exception: sheet.write(r, c, self.value_as_text)
return workbook
# Prepare tmp file mf = TmpMediaFile(ar, 'xls') settings.SITE.makedirs_if_missing(os.path.dirname(mf.name))
# Render self.render(ar, mf.name)
# Tell client that the action was successful and that it # should open a new browser window on the generated file. ar.success(open_url=mf.url)
workbook = ExcelRenderer(ar).render() workbook.save(file)
|