def queryset_to_workbook(queryset, columns, headers=None, header_style=HEADER_STYLE,
default_style=DEFAULT_STYLE, cell_style_map=CELL_STYLE_MAP):
'''
?django QuerySet??????excel?Workbook
:param queryset: django QuerySet??
:param columns: ? ('??', '???', '????')
:param headers: ? ('name', 'profile.phone', lambda x: (x.balance/100),)
:param header_style: ?????
:param default_style: ????
:param cell_style_map: (????,??)???
:return: xlwt.Workbook
'''
workbook = xlwt.Workbook()
report_date = datetime.date.today()
sheet_name = 'Export {0}'.format(report_date.strftime('%Y-%m-%d'))
sheet = workbook.add_sheet(sheet_name)
if headers:
for y, th in enumerate(headers):
sheet.write(0, y, th, header_style)
else:
for y, th in enumerate(columns):
value = get_column_head(th)
sheet.write(0, y, value, header_style)
for x, obj in enumerate(queryset, start=1):
for y, column in enumerate(columns):
if callable(column):
value = column(obj)
else:
value = get_column_cell(obj, column)
style = get_style_by_value(value, cell_style_map, default_style)
sheet.write(x, y, value, style)
return workbook
评论列表
文章目录