From fd6388f482d7560f2ad7d575d6893282b987dec8 Mon Sep 17 00:00:00 2001 From: lertlmaier Date: Mon, 7 Jul 2025 10:29:55 +0200 Subject: [PATCH] =?UTF-8?q?portalexport=20wrapper=20funktion=20geschieben?= =?UTF-8?q?=20und=20aufrufende=20.bat=20Datei.=20=20Namensgebung=20evtl=20?= =?UTF-8?q?nochmal=20=C3=BCberdenken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/ioconverter.bat | 4 +++ lib/portalexport.py | 88 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 bin/ioconverter.bat diff --git a/bin/ioconverter.bat b/bin/ioconverter.bat new file mode 100644 index 0000000..41c0e48 --- /dev/null +++ b/bin/ioconverter.bat @@ -0,0 +1,4 @@ +@echo off +CALL setenv.bat + +python %PROJECT_LIB%\portalexport.py %* \ No newline at end of file diff --git a/lib/portalexport.py b/lib/portalexport.py index e69de29..c31baa2 100644 --- a/lib/portalexport.py +++ b/lib/portalexport.py @@ -0,0 +1,88 @@ +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) +