import openpyxl

def kopiere_header(input_sheet, output_sheet):
    # Kopiere den Header manuell in das Ausgabe-Arbeitsblatt
    for row in input_sheet.iter_rows(min_row=1, max_row=1, values_only=True):
        output_sheet.append(row)

def sortiere_excel_tabelle(input_file_path, output_file_path, ):
    # Öffne die Eingabe-Excel-Datei
    input_workbook = openpyxl.load_workbook(input_file_path)
    input_sheet = input_workbook['Sheet1']

    # Erstelle eine neue Excel-Tabelle für die sortierten Zeilen
    output_workbook = openpyxl.Workbook()
    output_sheet = output_workbook.active

    # Kopiere den Header ins Ausgabe-Arbeitsblatt
    kopiere_header(input_sheet, output_sheet)

    # Lese die Daten-Zeilen aus der Tabelle
    data_rows = list(input_sheet.iter_rows(min_row=2, values_only=True))

    # Sortiere die Daten-Zeilen nach dem Wert der angegebenen Spalte
    sorted_data_rows = sorted(data_rows, key=lambda x: x[18 - 1])  # -1, da Listenindizes bei 0 beginnen

    # Schreibe die sortierten Daten-Zeilen in die neue Tabelle
    for row in sorted_data_rows:
        output_sheet.append(row)

    # Speichere die Änderungen in der neuen Excel-Datei
    output_workbook.save(output_file_path)

    # Schließe die Excel-Dateien
    input_workbook.close()
    output_workbook.close()


# Beispielaufruf
input_file_path = 'Testcase_excel_dataset.xlsx'
output_file_path = 'Testcases_nach_Genauigkeit.xlsx'

sortiere_excel_tabelle(input_file_path, output_file_path)