Ich habs noch nicht sinnvoll zusammengeführt, mach ich noch. Zuerst zusammenführen, dann Abweichung berechnen, dann umstrukturieren Außerdem hab ich es probeweise nicht im ordner mit der original excel ausgeführt, um im Fehlerfall nicht neu berechnen zu müssen Da es aber alles funktioniert würde ich das Programm wenn es fertig ist in den Ordner mit den excel files packenmaster
@@ -0,0 +1,57 @@ | |||
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) | |||
@@ -0,0 +1,42 @@ | |||
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) |
@@ -0,0 +1,52 @@ | |||
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_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): | |||
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() | |||
# Funktionsaufrufe | |||
input_string = excel_row_to_string('Testruns.xlsx') | |||
write_string_to_excel('Testcase_excel_dataset.xlsx', input_string) | |||