Ich habe in meinem ersten sheet Signale vom Typ boolean. Diese sollen in ein Wörterbuch, da diese später als ein gemeinsamer Block in das template geladen werden soll.
Im nächsten sheet habe ich Signale vom Typ int8, die auch in ein eigenes Wörterbuch sollen. Das liegt daran, dass ich diese Daten im weiteren Verlauf in folgender Form aufrufe bzw. ins template lade:
Code: Alles auswählen
template_workbook_sheet.cell(row=j, column=4).value = test_name_to_id_["Testen des Max. Wertebereichs"]
Hier suche ich nach der ID des Max-Tests. Wenn die Signale vom Typ boolean und int8 sich in einem Wörterbuch befinden würden und ich den gezeigten Code verwende, würde ich die ID von allen Signalen erhalten.
Allerdings möchte ich einmal auf die ID des Max-Test von zB Signal_1 (Datentyp: boolean, erstes sheet) zugreifen können ohne dabei gleichzeitig auf die ID des Max-Test von zB Signal_8 (Datentyp:int8, zweites sheet) zuzugreifen.
Der folgende Code funktioniert so nicht aber verdeutlicht vielleicht, wie das Ergebnis aussehen sollte
Code: Alles auswählen
def iter_tests(file_path):
workbook = load_workbook(file_path)
print(workbook.sheetnames)
sheet_bool = workbook["boolean"]
sheet_int8 = workbook["int8"]
sheet_uint8 = workbook["uint8"]
sheet_int16 = workbook["int16"]
sheet_uint16 = workbook["uint16"]
sheet_int32 = workbook["int32"]
sheet_uint32 = workbook["uint32"]
return (
Test(test_id_cell.value, test_name_cell.value, signal_name_cell.value)
for (
test_id_cell_bool,
_,
signal_name_cell_bool,
_,
_,
_,
test_name_cell_bool,
_,
_,
_,
_,
_,
_,
_,
_,
_,
_,
) in sheet_bool.rows
for (
test_id_cell_int8,
_,
signal_name_cell_int8,
_,
_,
_,
test_name_cell_int8,
_,
_,
_,
_,
_,
_,
_,
_,
_,
_,
) in sheet_int8.rows
)
def main():
template_workbook = load_workbook('C:/.../template.xlsx')
template_workbook_sheet = template_workbook.active
j = 9
for signal_name, test_name_to_id_bool in process_tests(iter_tests(SOURCE_PATH)):
print(">", signal_name)
pprint(test_name_to_id_bool)
template_workbook_sheet.cell(row=j, column=3).value = signal_name
template_workbook_sheet.cell(row=j, column=4).value = test_name_to_id_bool["Testen des Max. Wertebereichs"]
template_workbook_sheet.cell(row=j, column=5).value = test_name_to_id_bool["Timeout"]
template_workbook_sheet.cell(row=j, column=6).value = test_name_to_id_bool["Testen des Min. Wertebereichs"]
template_workbook_sheet.cell(row=j, column=7).value = test_name_to_id_bool["Init+Timeout"]
template_workbook_sheet.cell(row=j, column=8).value = test_name_to_id_bool["Init"]
template_workbook_sheet.cell(row=j, column=9).value = test_name_to_id_bool["Init+Timeout (Busruhe) "]
template_workbook_sheet.cell(row=j, column=10).value = test_name_to_id_bool["Init (Busruhe)"]
j += 1
k = 15
for signal_name, test_name_to_id_int8 in process_tests(iter_tests(SOURCE_PATH)):
print(">", signal_name)
pprint(test_name_to_id_int8)
template_workbook_sheet.cell(row=j, column=3).value = signal_name
template_workbook_sheet.cell(row=k, column=4).value = test_name_to_id_int8["Testen des Max. Wertebereichs"]
template_workbook_sheet.cell(row=k, column=5).value = test_name_to_id_int8["Timeout"]
template_workbook_sheet.cell(row=k, column=6).value = test_name_to_id_int8["Testen des Min. Wertebereichs"]
template_workbook_sheet.cell(row=k, column=7).value = test_name_to_id_int8["Init+Timeout"]
template_workbook_sheet.cell(row=k, column=8).value = test_name_to_id_int8["Init"]
template_workbook_sheet.cell(row=k, column=9).value = test_name_to_id_int8["Init+Timeout (Busruhe) "]
template_workbook_sheet.cell(row=k, column=10).value = test_name_to_id_int8["Init (Busruhe)"]
k += 1
template_workbook.save('C:/.../tab_2.xlsx')
if __name__ == "__main__":
main()