From 8f505c6595b7655e1e03549764c2685f942165db Mon Sep 17 00:00:00 2001 From: Laurent Mignon Date: Thu, 28 Apr 2016 16:17:24 +0200 Subject: [PATCH] [FIX] correctly handle Sub KPI in xlsx report --- mis_builder/report/mis_builder_xlsx.py | 32 +++++++++++++++++++++----- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/mis_builder/report/mis_builder_xlsx.py b/mis_builder/report/mis_builder_xlsx.py index be7793aa..2c9c7f0e 100644 --- a/mis_builder/report/mis_builder_xlsx.py +++ b/mis_builder/report/mis_builder_xlsx.py @@ -59,12 +59,32 @@ class MisBuilderXslx(ReportXlsx): data = objects.compute() # Column headers - for col in data['header'][0]['cols']: - sheet.set_column(col_pos, col_pos, 30) - sheet.write(row_pos, col_pos, col['name'], header_format) - sheet.write(row_pos+1, col_pos, col['date'], header_format) - col_pos += 1 - row_pos += 2 + for header in data['header']: + has_col_date = False + for col in header['cols']: + colspan = col['colspan'] + col_date = col.get('date') + col_name = col['name'] + has_col_date = has_col_date or col_date + if colspan > 1: + sheet.merge_range( + row_pos, col_pos, row_pos, col_pos + colspan-1, + col_name, header_format) + if col_date: + sheet.merge_range( + row_pos+1, col_pos, row_pos+1, col_pos + colspan-1, + col_date, header_format) + col_pos += colspan + else: + sheet.write(row_pos, col_pos, col['name'], header_format) + if col_date: + sheet.write( + row_pos+1, col_pos, col.get('date'), header_format) + col_pos += 1 + col_pos = 1 + row_pos += 1 + if has_col_date: + row_pos += 1 for line in data['content']: col = 0 sheet.write(row_pos, col, line['kpi_name'], kpi_name_format)