import os import sys import argparse from ioconverter import ExcelConverter import configparser # Helper für Export def do_export(mode_str, output_dir): # Für WSCAD Dateinamen anpassen (Export-Typ bleibt "WSCAD" oder "WSCAD mit Bezug") if mode_str == "WSCAD": export_type = "WSCAD" if args.no_bezug else "WSCAD mit Bezug" filename = f"{input_basename}_{'WSCAD_no_Bezug' if args.no_bezug else 'WSCAD'}.xlsx" else: export_type = mode_str filename = f"{input_basename}_{mode_str}.xlsx" export_path = args.output if args.output and args.mode == mode_str else os.path.join(output_dir, filename) try: converter.export_excel(lines, export_type, export_path) print(f"Export '{export_type}' erfolgreich: {export_path}") except Exception as e: print(f"Fehler bei Export '{export_type}': {e}") if __name__ == "__main__": parser = argparse.ArgumentParser(description="Excel-Konverter für BMK-Daten") parser.add_argument("--mode", type=str, choices=["EA", "TIA", "WSCAD"], help="Art des Exports (EA, TIA, WSCAD). Wenn nicht gesetzt, werden alle drei erzeugt.") parser.add_argument("--input", type=str, required=True, help="Pfad zur Eingabedatei (.txt)") parser.add_argument("--output", type=str, help="Pfad zur Zieldatei (.xlsx)") parser.add_argument("--no-bezug", action="store_true", help="(Nur bei WSCAD) Export ohne Bezugsinformationen") args = parser.parse_args() # Umgebungsvariablen work_dir = os.environ.get("PROJECT_WORK") config_dir = os.environ.get("PROJECT_CFG") # Wenn Input Pfad kein absoluter Pfad, dann in work nach Dateinamen suchen if not os.path.isabs(args.input): if work_dir: args.input = os.path.join(work_dir, args.input) # Konfigurationsdatei # config = configparser.ConfigParser(allow_no_value=True, delimiters=("=")) # config.optionxform = lambda option: option # preserve case for letters # config.read(os.path.join(config_dir, "xxxx.cfg")) # Datei einlesen try: with open(args.input, "r", encoding="utf-8") as f: lines = f.readlines() except Exception as e: print(f"Fehler beim Lesen der Datei: {e}") sys.exit(1) # Converter initialisieren converter = ExcelConverter() input_basename = os.path.splitext(os.path.basename(args.input))[0] output_dir = os.environ.get("PROJECT_WORK", os.getcwd()) # Modus bestimmen if args.mode: export_mode = args.mode if export_mode == "WSCAD": # WSCAD bleibt immer der Export-Typ export_type = "WSCAD" if args.no_bezug else "WSCAD mit Bezug" # Dateiname hängt vom --no-bezug-Flag ab filename_suffix = "WSCAD_no_Bezug" if args.no_bezug else "WSCAD" filename = f"{input_basename}_{filename_suffix}.xlsx" export_path = args.output if args.output else os.path.join(output_dir, filename) try: converter.export_excel(lines, export_type, export_path) print(f"Export {export_type} erfolgreich: {export_path}") except Exception as e: print(f"Fehler bei Export {export_type}: {e}") else: do_export(export_mode, output_dir) else: # Kein Modus → alle drei exportieren do_export("EA", output_dir) do_export("TIA", output_dir) do_export("WSCAD", output_dir)