|
- from __future__ import unicode_literals
-
- import frappe, xlwt, StringIO, datetime
- from frappe import _
-
- def get_xls(columns, data):
- '''Convert data to xls'''
- stream = StringIO.StringIO()
- workbook = xlwt.Workbook()
- sheet = workbook.add_sheet(_("Sheet 1"))
-
- # formats
- dateformat = xlwt.easyxf(num_format_str=
- (frappe.defaults.get_global_default("date_format") or "yyyy-mm-dd"))
- bold = xlwt.easyxf('font: bold 1')
-
- # header
- for i, col in enumerate(columns):
- sheet.write(0, i, col.label, bold)
-
- for i, row in enumerate(data):
- for j, df in enumerate(columns):
- f = None
-
- val = row[columns[j].fieldname]
- if isinstance(val, (datetime.datetime, datetime.date)):
- f = dateformat
-
- if f:
- sheet.write(i+1, j, val, f)
- else:
- sheet.write(i+1, j, frappe.format(val, df, row))
-
- workbook.save(stream)
- stream.seek(0)
- return stream.read()
|