diff --git a/excel_evaluation.py b/excel_evaluation.py deleted file mode 100644 index c0004e9..0000000 --- a/excel_evaluation.py +++ /dev/null @@ -1,151 +0,0 @@ -import openpyxl - -def excel_row_to_string(file_path): - # Öffne die Excel-Datei - workbook = openpyxl.load_workbook(file_path) - - # Wähle das Arbeitsblatt aus - sheet = workbook['Sheet1'] - - # Erhalte die angegebene Zeile als Liste von Zellen - row_values = [cell.value for cell in sheet[2]] - - # Ergebnisse werden ab Spalte 5 eingetragen - selected_columns = list(range(4, len(row_values))) - - # Wähle nur die gewünschten Spalten aus - selected_values = [row_values[col] for col in selected_columns] - - # Schließe die Excel-Datei - workbook.close() - - # Konvertiere die Liste von Zellen in einen String - row_string = ', '.join(str(value) for value in selected_values) - - return row_string - -def write_subdivided_string_to_excel(file_path, input_string): - # Öffne die Excel-Datei - workbook = openpyxl.load_workbook(file_path) - - # Wähle das Arbeitsblatt aus - sheet = workbook['Sheet1'] - - # Teile den String nach jedem Komma auf - parts = input_string.split(',') - - # Trage jeden Teil des Strings in eine neue Zeile ein - for i, part in enumerate(parts, 1): - - #Spalte 17 kann sich je nach Tabellenstruktur ändern! - sheet.cell(row=2 + i - 1, column=17, value=part.strip()) # strip entfernt mögliche Leerzeichen - - # Speichere die Änderungen - workbook.save(file_path) - - # Schließe die Excel-Datei - workbook.close() - -def read_columns(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 calculate_deviation(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 - deviations = [((abs(float(b) - float(a)) / float(a)) * 100) if float(a) != 0 else None for a, b in zip(liste1, liste2)] - - return deviations - -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() - -def copy_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 sort_excel(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 - copy_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() - - -#Sollten mehrere Testruns ausgewertet werden wollen, müssen die enthaltenen Funktionen umstrukturiert werden -#Aktuell wird nur der Testrun in Zeile 1 ausgewertet -#Eine Weitere Funktion, die zwei Tabellenzeilen tauscht, wäre der einfachste workaround -def evaluation(testcases, testruns): - - #liest die Ergebnisse des Testruns aus - #bei mehreren Testruns muss diese Funktion angepasst werden! - input_string = excel_row_to_string(testruns) - - #schreibt die Berechneten Ergebnisse in die Testcases-Tabelle - write_subdivided_string_to_excel(testcases, input_string) - - #liest die gemessenen und die errechneten Werte aus den Testcases - values_col1, values_col2 = read_columns(testcases) - - #berechnet aus diesen Werten die prozentuale Abweichung - deviations = calculate_deviation(values_col1, values_col2) - - #Trägt die prozentualen Abweichungen in die Testcases-Tabelle - #je nach Tabellenstruktur kann sich die 18 ändern! - write_string_to_excel(testcases, deviations, 18) - - #Gibt die eine Kopie der Testcases-Tabelle sortiert nach Genauigkeit aus - sort_excel(testcases, 'Testcases_nach_Genauigkeit.xlsx') -