import openpyxl

def lese_zwei_spalten(file_path):
    # Öffne die Excel-Datei
    workbook = openpyxl.load_workbook(file_path)

    # Wähle das Arbeitsblatt aus
    sheet = workbook['Sheet1']

    # Lese die Werte der beiden Spalten aus
    values_column1 = [cell.value for cell in sheet['O']][1:]
    values_column2 = [cell.value for cell in sheet['Q']][1:]

    # Schließe die Excel-Datei
    workbook.close()

    return values_column1, values_column2

def berechne_prozentuale_abweichung(liste1, liste2):
    # Überprüfe, ob die Listen die gleiche Länge haben
    if len(liste1) != len(liste2):
        raise ValueError("Die Listen müssen die gleiche Länge haben")

    # Berechne die prozentuale Abweichung zwischen den Werten
    abweichungen = [((abs(float(b) - float(a)) / float(a)) * 100) if float(a) != 0 else None for a, b in zip(liste1, liste2)]

    return abweichungen

def write_string_to_excel(file_path, input_string, column):
    # Öffne die Excel-Datei
    workbook = openpyxl.load_workbook(file_path)

    # Wähle das Arbeitsblatt aus
    sheet = workbook['Sheet1']

    # Trage jeden Buchstaben des Strings in eine eigene Zeile ein
    for i, char in enumerate(input_string, 1):
        sheet.cell(row=2 + i - 1, column=column, value=char)

    # Speichere die Änderungen
    workbook.save(file_path)

    # Schließe die Excel-Datei
    workbook.close()


# Funktionsaufruf

values_col1, values_col2 = lese_zwei_spalten('Testcase_excel_dataset.xlsx')

print(values_col1)
print(values_col2)

abweichungen = berechne_prozentuale_abweichung(values_col1, values_col2)

write_string_to_excel('Testcase_excel_dataset.xlsx', abweichungen, 18)

