From e744744dfafaf1829b5ee10e92f237f6d0f75e79 Mon Sep 17 00:00:00 2001 From: "13621160019@163.com" <13621160019@163.com> Date: Sun, 18 Apr 2021 23:23:51 +0800 Subject: [PATCH] fixed issues in excel exporters of combinedequipment in API --- .../excelexporters/combinedequipmentcost.py | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/myems-api/excelexporters/combinedequipmentcost.py b/myems-api/excelexporters/combinedequipmentcost.py index b927268c..a24326b4 100644 --- a/myems-api/excelexporters/combinedequipmentcost.py +++ b/myems-api/excelexporters/combinedequipmentcost.py @@ -763,7 +763,7 @@ def generate_excel(report, parameters_ws[table_current_col_number + str(parameters_ws_current_row_number - 1)].fill = table_fill parameters_ws[table_current_col_number + str(parameters_ws_current_row_number - 1)].border = f_border - col = chr(ord(table_current_col_number) + 1) + col = decimal_to_column(column_to_decimal(table_current_col_number) + 1) parameters_ws[col + str(parameters_ws_current_row_number - 1)].fill = table_fill parameters_ws[col + str(parameters_ws_current_row_number - 1)].border = f_border @@ -781,7 +781,7 @@ def generate_excel(report, parameters_ws[col + str(table_current_row_number)].alignment = c_c_alignment parameters_ws[col + str(table_current_row_number)] = value - col = chr(ord(col) + 1) + col = decimal_to_column(column_to_decimal(col) + 1) parameters_ws[col + str(table_current_row_number)].border = f_border parameters_ws[col + str(table_current_row_number)].font = title_font @@ -790,7 +790,7 @@ def generate_excel(report, table_current_row_number += 1 - table_current_col_number = chr(ord(table_current_col_number) + 3) + table_current_col_number = decimal_to_column(column_to_decimal(table_current_col_number) + 3) ######################################################## # parameters chart and parameters table @@ -870,3 +870,33 @@ def timestamps_data_not_equal_0(lists): if len(value) > 0: number += 1 return number + + +def decimal_to_column(num=65): + string = '' + num = num - 64 + # The column number is not greater than 90 + if num <= 26: + return chr(num + 64) + # The column number is greater than 90 + while num // 26 > 0: + if num % 26 == 0: + string += 'Z' + num = num // 26 - 1 + else: + string += chr(num % 26 + 64) + num //= 26 + # Avoid conversion errors that might occur between 741 and 766 + if num > 0: + string += chr(num + 64) + + return string[::-1] + + +def column_to_decimal(string='A'): + num = 0 + for index, key in enumerate(string[::-1]): + num += (ord(key) - 64) * (26 ** index) + + return num + 64 +