fixed the sequence of detailed data line chart
parent
d12d84fef5
commit
5b6ed07339
|
@ -88,10 +88,10 @@ def timestamps_data_not_equal_0(lists):
|
|||
def decimal_to_column(num=65):
|
||||
string = ''
|
||||
num = num - 64
|
||||
# The column number is not greater than 90
|
||||
# The column number is not greater than 90
|
||||
if num <= 26:
|
||||
return chr(num+64)
|
||||
# The column number is greater than 90
|
||||
return chr(num + 64)
|
||||
# The column number is greater than 90
|
||||
while num // 26 > 0:
|
||||
if num % 26 == 0:
|
||||
string += 'Z'
|
||||
|
@ -99,7 +99,7 @@ def decimal_to_column(num=65):
|
|||
else:
|
||||
string += chr(num % 26 + 64)
|
||||
num //= 26
|
||||
# Avoid conversion errors that might occur between 741 and 766
|
||||
# Avoid conversion errors that might occur between 741 and 766
|
||||
if num > 0:
|
||||
string += chr(num + 64)
|
||||
|
||||
|
@ -257,8 +257,7 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
ws[col + '7'].fill = table_fill
|
||||
ws[col + '7'].font = name_font
|
||||
ws[col + '7'].alignment = c_c_alignment
|
||||
ws[col + '7'] = report['meter']['energy_category_name'] + \
|
||||
" (" + report['meter']['unit_of_measure'] + ")"
|
||||
ws[col + '7'] = report['meter']['energy_category_name'] + " (" + report['meter']['unit_of_measure'] + ")"
|
||||
ws[col + '7'].border = f_border
|
||||
|
||||
ws[col + '8'].font = name_font
|
||||
|
@ -328,29 +327,32 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
has_cost_datail_flag = False
|
||||
|
||||
if has_cost_datail_flag:
|
||||
parameters_names_len = len(report['parameters']['names'])
|
||||
start_detail_data_row_number = 7 + (parameters_names_len + ca_len) * 6
|
||||
|
||||
ws['B11'].font = title_font
|
||||
ws['B11'] = name + '详细数据'
|
||||
|
||||
ws.row_dimensions[18].height = 60
|
||||
ws['B18'].fill = table_fill
|
||||
ws['B18'].font = title_font
|
||||
ws['B18'].border = f_border
|
||||
ws['B18'].alignment = c_c_alignment
|
||||
ws['B18'] = '日期时间'
|
||||
ws.row_dimensions[start_detail_data_row_number].height = 60
|
||||
ws['B' + str(start_detail_data_row_number)].fill = table_fill
|
||||
ws['B' + str(start_detail_data_row_number)].font = title_font
|
||||
ws['B' + str(start_detail_data_row_number)].border = f_border
|
||||
ws['B' + str(start_detail_data_row_number)].alignment = c_c_alignment
|
||||
ws['B' + str(start_detail_data_row_number)] = '日期时间'
|
||||
time = times
|
||||
has_data = False
|
||||
max_row = 0
|
||||
if len(time) > 0:
|
||||
has_data = True
|
||||
max_row = 18 + len(time)
|
||||
max_row = start_detail_data_row_number + len(time)
|
||||
|
||||
if has_data:
|
||||
|
||||
end_data_row_number = 19
|
||||
end_data_row_number = start_detail_data_row_number
|
||||
|
||||
for i in range(0, len(time)):
|
||||
col = 'B'
|
||||
end_data_row_number = 19 + i
|
||||
end_data_row_number += 1
|
||||
row = str(end_data_row_number)
|
||||
|
||||
ws[col + row].font = title_font
|
||||
|
@ -367,18 +369,18 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
|
||||
col = chr(ord('C') + i)
|
||||
|
||||
ws[col + '18'].fill = table_fill
|
||||
ws[col + '18'].font = title_font
|
||||
ws[col + '18'].alignment = c_c_alignment
|
||||
ws[col + '18'] = report['meter']['energy_category_name'] + \
|
||||
" (" + report['meter']['unit_of_measure'] + ")"
|
||||
ws[col + '18'].border = f_border
|
||||
ws[col + str(start_detail_data_row_number)].fill = table_fill
|
||||
ws[col + str(start_detail_data_row_number)].font = title_font
|
||||
ws[col + str(start_detail_data_row_number)].alignment = c_c_alignment
|
||||
ws[col + str(start_detail_data_row_number)] = \
|
||||
report['meter']['energy_category_name']+" (" + report['meter']['unit_of_measure'] + ")"
|
||||
ws[col + str(start_detail_data_row_number)].border = f_border
|
||||
|
||||
time = times
|
||||
time_len = len(time)
|
||||
|
||||
for j in range(0, time_len):
|
||||
row = str(19 + j)
|
||||
row = str(start_detail_data_row_number + 1 + j)
|
||||
|
||||
ws[col + row].font = title_font
|
||||
ws[col + row].alignment = c_c_alignment
|
||||
|
@ -393,9 +395,9 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
line = LineChart()
|
||||
line.title = '报告期成本 - ' + report['meter']['energy_category_name'] + \
|
||||
" (" + report['meter']['unit_of_measure'] + ")"
|
||||
line_data = Reference(ws, min_col=3, min_row=18, max_row=max_row)
|
||||
line_data = Reference(ws, min_col=3, min_row=start_detail_data_row_number, max_row=max_row)
|
||||
line.series.append(Series(line_data, title_from_data=True))
|
||||
labels = Reference(ws, min_col=2, min_row=19, max_row=max_row)
|
||||
labels = Reference(ws, min_col=2, min_row=start_detail_data_row_number + 1, max_row=max_row)
|
||||
line.set_categories(labels)
|
||||
line_data = line.series[0]
|
||||
line_data.marker.symbol = "circle"
|
||||
|
@ -414,7 +416,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
##########################################
|
||||
has_parameters_names_and_timestamps_and_values_data = True
|
||||
# 12 is the starting line number of the last line chart in the report period
|
||||
current_sheet_parameters_row_number = 15 + ca_len * 6 + time_len
|
||||
time_len = len(reporting_period_data['timestamps'])
|
||||
current_sheet_parameters_row_number = 12 + ca_len * 6
|
||||
if 'parameters' not in report.keys() or \
|
||||
report['parameters'] is None or \
|
||||
'names' not in report['parameters'].keys() or \
|
||||
|
|
|
@ -333,28 +333,30 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
reporting_period_data = report['reporting_period']
|
||||
category = report['meter']['energy_category_name']
|
||||
ca_len = len(category)
|
||||
parameters_names_len = len(report['parameters']['names'])
|
||||
start_detail_data_row_num = 7 + (parameters_names_len + ca_len) * 6
|
||||
|
||||
ws['B11'].font = title_font
|
||||
ws['B11'] = name + '详细数据'
|
||||
|
||||
ws.row_dimensions[18].height = 60
|
||||
ws.row_dimensions[start_detail_data_row_num].height = 60
|
||||
|
||||
ws['B18'].fill = table_fill
|
||||
ws['B18'].font = title_font
|
||||
ws['B18'].border = f_border
|
||||
ws['B18'].alignment = c_c_alignment
|
||||
ws['B18'] = '日期时间'
|
||||
ws['B' + str(start_detail_data_row_num)].fill = table_fill
|
||||
ws['B' + str(start_detail_data_row_num)].font = title_font
|
||||
ws['B' + str(start_detail_data_row_num)].border = f_border
|
||||
ws['B' + str(start_detail_data_row_num)].alignment = c_c_alignment
|
||||
ws['B' + str(start_detail_data_row_num)] = '日期时间'
|
||||
time = times
|
||||
has_data = False
|
||||
max_row = 0
|
||||
if len(time) > 0:
|
||||
has_data = True
|
||||
max_row = 18 + len(time)
|
||||
max_row = start_detail_data_row_num + len(time)
|
||||
|
||||
if has_data:
|
||||
for i in range(0, len(time)):
|
||||
col = 'B'
|
||||
row = str(19 + i)
|
||||
row = str(start_detail_data_row_num + 1 + i)
|
||||
# col = chr(ord('B') + i)
|
||||
ws[col + row].font = title_font
|
||||
ws[col + row].alignment = c_c_alignment
|
||||
|
@ -365,19 +367,19 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
# 12 title
|
||||
col = chr(ord('C') + i)
|
||||
|
||||
ws[col + '18'].fill = table_fill
|
||||
ws[col + '18'].font = title_font
|
||||
ws[col + '18'].alignment = c_c_alignment
|
||||
ws[col + '18'] = report['meter']['energy_category_name'] + \
|
||||
ws[col + str(start_detail_data_row_num)].fill = table_fill
|
||||
ws[col + str(start_detail_data_row_num)].font = title_font
|
||||
ws[col + str(start_detail_data_row_num)].alignment = c_c_alignment
|
||||
ws[col + str(start_detail_data_row_num)] = report['meter']['energy_category_name'] + \
|
||||
" (" + report['meter']['unit_of_measure'] + ")"
|
||||
ws[col + '18'].border = f_border
|
||||
ws[col + str(start_detail_data_row_num)].border = f_border
|
||||
|
||||
# 13 data
|
||||
time = times
|
||||
time_len = len(time)
|
||||
|
||||
for j in range(0, time_len):
|
||||
row = str(19 + j)
|
||||
row = str(start_detail_data_row_num + 1 + j)
|
||||
# col = chr(ord('B') + i)
|
||||
ws[col + row].font = title_font
|
||||
ws[col + row].alignment = c_c_alignment
|
||||
|
@ -388,8 +390,8 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
line = LineChart()
|
||||
line.title = '报告期消耗 - ' + report['meter']['energy_category_name'] + \
|
||||
" (" + report['meter']['unit_of_measure'] + ")"
|
||||
labels = Reference(ws, min_col=2, min_row=19, max_row=max_row)
|
||||
bar_data = Reference(ws, min_col=3, min_row=18, max_row=max_row)
|
||||
labels = Reference(ws, min_col=2, min_row=start_detail_data_row_num + 1, max_row=max_row)
|
||||
bar_data = Reference(ws, min_col=3, min_row=start_detail_data_row_num, max_row=max_row)
|
||||
line.add_data(bar_data, titles_from_data=True)
|
||||
line.set_categories(labels)
|
||||
line_data = line.series[0]
|
||||
|
@ -410,7 +412,7 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
ws.add_chart(line, "B12")
|
||||
|
||||
col = 'B'
|
||||
row = str(19 + len(time))
|
||||
row = str(start_detail_data_row_num + 1 + len(time))
|
||||
|
||||
ws[col + row].font = title_font
|
||||
ws[col + row].alignment = c_c_alignment
|
||||
|
@ -432,8 +434,9 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
has_parameters_names_and_timestamps_and_values_data = True
|
||||
# 12 is the starting line number of the last line chart in the report period
|
||||
category = report['meter']['energy_category_name']
|
||||
time_len = len(reporting_period_data['timestamps'])
|
||||
ca_len = len(category)
|
||||
current_sheet_parameters_row_number = 15 + ca_len * 6 + time_len
|
||||
current_sheet_parameters_row_number = 12 + ca_len * 6
|
||||
if 'parameters' not in report.keys() or \
|
||||
report['parameters'] is None or \
|
||||
'names' not in report['parameters'].keys() or \
|
||||
|
|
|
@ -290,6 +290,7 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
current_row_number += 2
|
||||
|
||||
time = reporting_period_data['timestamps']
|
||||
parameters_names_len = len(report['parameters']['names'])
|
||||
has_time_data_flag = False
|
||||
if time is not None and len(time) > 0:
|
||||
has_time_data_flag = True
|
||||
|
@ -301,7 +302,7 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
|
||||
current_row_number += 1
|
||||
chart_start_number = current_row_number
|
||||
current_row_number = current_row_number + 6
|
||||
current_row_number = current_row_number + 7 + parameters_names_len * 6
|
||||
table_start_number = current_row_number
|
||||
|
||||
ws.row_dimensions[current_row_number].height = 60
|
||||
|
@ -374,7 +375,7 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
category = report['meter']['energy_category_name']
|
||||
ca_len = len(category)
|
||||
time_len = len(report['reporting_period']['timestamps'])
|
||||
current_sheet_parameters_row_number = 17 + ca_len * 6 + time_len
|
||||
current_sheet_parameters_row_number = 14 + ca_len * 6
|
||||
if 'parameters' not in report.keys() or \
|
||||
report['parameters'] is None or \
|
||||
'names' not in report['parameters'].keys() or \
|
||||
|
@ -551,10 +552,6 @@ def generate_excel(report, name, reporting_start_datetime_local, reporting_end_d
|
|||
chart_start_row_number += 6
|
||||
ws.add_chart(line, chart_cell)
|
||||
|
||||
current_sheet_parameters_row_number = chart_start_row_number
|
||||
|
||||
current_sheet_parameters_row_number += 1
|
||||
|
||||
filename = str(uuid.uuid4()) + '.xlsx'
|
||||
wb.save(filename)
|
||||
|
||||
|
|
|
@ -199,14 +199,6 @@ def generate_excel(report,
|
|||
ws['C3'].font = name_font
|
||||
ws['C3'] = name
|
||||
|
||||
ws['D3'].font = name_font
|
||||
ws['D3'].alignment = b_r_alignment
|
||||
ws['D3'] = 'Period:'
|
||||
ws['E3'].border = b_border
|
||||
ws['E3'].alignment = b_c_alignment
|
||||
ws['E3'].font = name_font
|
||||
ws['E3'] = period_type
|
||||
|
||||
ws['F3'].font = name_font
|
||||
ws['F3'].alignment = b_r_alignment
|
||||
ws['F3'] = 'Date:'
|
||||
|
@ -247,6 +239,7 @@ def generate_excel(report,
|
|||
ca_len = len(ca)
|
||||
temp_max_row = 0
|
||||
times = reporting_period_data['timestamps']
|
||||
category = report['meter']['energy_category_name']
|
||||
if has_data_flag:
|
||||
ws['B6'].font = title_font
|
||||
ws['B6'] = name + ' 趋势'
|
||||
|
@ -258,13 +251,18 @@ def generate_excel(report,
|
|||
ws['B7'].alignment = c_c_alignment
|
||||
ws['B7'] = '日期时间'
|
||||
time = times[0]
|
||||
for time in times:
|
||||
if len(time) > 0:
|
||||
break
|
||||
has_data = False
|
||||
max_row = 0
|
||||
current_sheet_parameters_row_number = 10
|
||||
if len(time) > 0:
|
||||
has_data = True
|
||||
max_row = 8 + len(time)
|
||||
# print("max_row", max_row)
|
||||
temp_max_row = max_row
|
||||
current_sheet_parameters_row_number = 2 + ca_len * 6 + temp_max_row
|
||||
if has_data:
|
||||
for i in range(0, len(time)):
|
||||
col = 'B'
|
||||
|
@ -285,19 +283,18 @@ def generate_excel(report,
|
|||
ws[col + '7'] = reporting_period_data['names'][i]
|
||||
ws[col + '7'].border = f_border
|
||||
|
||||
# 39 data
|
||||
time = times[i]
|
||||
time_len = len(time)
|
||||
for j in range(0, len(time)):
|
||||
|
||||
for j in range(0, time_len):
|
||||
row = str(8 + j)
|
||||
# col = chr(ord('B') + i)
|
||||
ws[col + row].font = title_font
|
||||
ws[col + row].alignment = c_c_alignment
|
||||
ws[col + row] = round(reporting_period_data['values'][i][j], 3)
|
||||
ws[col + row] = round(reporting_period_data['values'][i][j], 3) if \
|
||||
len(reporting_period_data['values'][i]) > 0 is not None and \
|
||||
reporting_period_data['values'][i][j] is not None else " "
|
||||
ws[col + row].border = f_border
|
||||
# line
|
||||
# 39~: line
|
||||
# line
|
||||
# 39~: line
|
||||
line = LineChart()
|
||||
line.title = '趋势值 - ' + reporting_period_data['names'][i]
|
||||
labels = Reference(ws, min_col=2, min_row=8, max_row=max_row-1)
|
||||
|
@ -319,21 +316,18 @@ def generate_excel(report,
|
|||
# s1 = CharacterProperties(sz=1800) # font size *100
|
||||
chart_col = chr(ord('B'))
|
||||
chart_cell = chart_col + str(max_row + 2 + 6*i)
|
||||
print("chart_cell", chart_cell)
|
||||
|
||||
ws.add_chart(line, chart_cell)
|
||||
else:
|
||||
pass
|
||||
|
||||
for i in range(8, temp_max_row + 1 + 1 + + ca_len * 6):
|
||||
for i in range(8, temp_max_row + 1 + 1 + + ca_len * 6 + len(category) * 6 + 2):
|
||||
ws.row_dimensions[i].height = 42
|
||||
|
||||
##########################################
|
||||
has_parameters_names_and_timestamps_and_values_data = True
|
||||
# 12 is the starting line number of the last line chart in the report period
|
||||
category = report['meter']['energy_category_name']
|
||||
ca_len = len(category)
|
||||
time_len = len(report['reporting_period']['timestamps'])
|
||||
current_sheet_parameters_row_number = 17 + ca_len * 6 + time_len
|
||||
|
||||
if 'parameters' not in report.keys() or \
|
||||
report['parameters'] is None or \
|
||||
'names' not in report['parameters'].keys() or \
|
||||
|
@ -396,14 +390,6 @@ def generate_excel(report,
|
|||
parameters_ws['C3'].font = name_font
|
||||
parameters_ws['C3'] = name
|
||||
|
||||
parameters_ws['D3'].font = name_font
|
||||
parameters_ws['D3'].alignment = b_r_alignment
|
||||
parameters_ws['D3'] = 'Period:'
|
||||
parameters_ws['E3'].border = b_border
|
||||
parameters_ws['E3'].alignment = b_c_alignment
|
||||
parameters_ws['E3'].font = name_font
|
||||
parameters_ws['E3'] = period_type
|
||||
|
||||
parameters_ws['F3'].font = name_font
|
||||
parameters_ws['F3'].alignment = b_r_alignment
|
||||
parameters_ws['F3'] = 'Date:'
|
||||
|
|
Loading…
Reference in New Issue