import csv import os from jit_oracle_connection import JitOracleConnection import argparse def main(): count = 0 instantclient_path = r"\\195.243.223.3\sivas_schreiben\jit\oracle\bin\x64" conn = JitOracleConnection(db_host='195.243.223.3', db_sid='linux', db_user='sivas', db_pwd='forte', db_database='sivas', instantclient_dir=instantclient_path, tns_admin=None, app=None, init_oracle_client=True) if not conn: return if "SIVAS_EXCEL_EXPORT_DIR" in os.environ: excel_export_dir = os.environ["SIVAS_EXCEL_EXPORT_DIR"] else: excel_export_dir = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop') parser = argparse.ArgumentParser(description='Ein Tool, um Daten aus dem SIVAS-Teilestamm in eine Excel-Datei zu exportieren. Es können mit dem Parameter TEILENR 1...n Teilenummern angegeben werden. Das Verzeichnis in welches die CSV-Dateien exportiert werden muss als Umgebungsvariable SIVAS_EXCEL_EXPORT_DIR definiert werden. Falls nicht spezifiziert, wird auf den Desktop exportiert. Beispielaufruf: KSbExcelExportSivasTeilestamm.exe TEILENR=4711,0815,1234') parser.add_argument('-teilenr', dest='para_teilenr', help='Kommaseparierte liste von Artikelnummern') args = parser.parse_args() if not args.para_teilenr: print("Fehler beim Auslesen des Teilenummern Parameters.") return teilenummern = [s.strip() for s in args.para_teilenr.split(",")] for teilenr in teilenummern: o_fehler = conn.cursor_var(str) retval = conn.call('sivas.excel_ueb.konserve_ausfuehren', {"i_lfdnr": 500, "i_param1": teilenr, "o_fehler": o_fehler}) if not retval: print(f"Fehler beim Export der Teilenummer {teilenr}: {o_fehler.getvalue()}") return writer = csv.writer(open(os.path.join(excel_export_dir, f"{teilenr}.csv"), "w", newline='', encoding='utf-8'), delimiter=";") sql = """select zeile from excel_ergebnis order by lfdnr""" zeilen = conn.query(sql) for zeile in zeilen: zeile_writable = zeile["ZEILE"].replace('\t', ';').lstrip('\"').rstrip('\"') writer.writerow([zeile_writable]) count = count + 1 print(f"{teilenr}.csv exportiert nach {excel_export_dir}") conn.connection().close() if count > 0: print(f"Alle Teile exportiert nach {excel_export_dir}") os.startfile(excel_export_dir) else: print("Nichts exportiert") if __name__ == '__main__': main()