portalexport wrapper funktion geschieben und aufrufende .bat Datei. Namensgebung evtl nochmal überdenken

This commit is contained in:
2025-07-07 10:29:55 +02:00
parent 61ffcaa271
commit fd6388f482
2 changed files with 92 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
@echo off
CALL setenv.bat
python %PROJECT_LIB%\portalexport.py %*
+88
View File
@@ -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)