diff --git a/KSbExcelExportSivasTeilestamm/.idea/KSbExcelExportSivasTeilestamm.iml b/KSbExcelExportSivasTeilestamm/.idea/KSbExcelExportSivasTeilestamm.iml index 74d515a..19be681 100644 --- a/KSbExcelExportSivasTeilestamm/.idea/KSbExcelExportSivasTeilestamm.iml +++ b/KSbExcelExportSivasTeilestamm/.idea/KSbExcelExportSivasTeilestamm.iml @@ -1,10 +1,10 @@ - - - - + + + + \ No newline at end of file diff --git a/KSbExcelExportSivasTeilestamm/.idea/misc.xml b/KSbExcelExportSivasTeilestamm/.idea/misc.xml index d4bc084..34f85ae 100644 --- a/KSbExcelExportSivasTeilestamm/.idea/misc.xml +++ b/KSbExcelExportSivasTeilestamm/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/KSbExcelExportSivasTeilestamm/README.md b/KSbExcelExportSivasTeilestamm/README.md index cc60c7b..02e4ffd 100644 --- a/KSbExcelExportSivasTeilestamm/README.md +++ b/KSbExcelExportSivasTeilestamm/README.md @@ -1,4 +1,6 @@ # KSbExcelExportSivasTeilestamm -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 \ No newline at end of file +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 + +usage: KSbExcelExportSivasTeilestamm.exe [-h] -teilenr TEILENUMMERN_KOMMA_SEPARIERT \ No newline at end of file diff --git a/KSbExcelExportSivasTeilestamm/main.py b/KSbExcelExportSivasTeilestamm/main.py index 76d0e8c..11689b2 100644 --- a/KSbExcelExportSivasTeilestamm/main.py +++ b/KSbExcelExportSivasTeilestamm/main.py @@ -1,16 +1,66 @@ -# This is a sample Python script. +import csv +import os -# Press Umschalt+F10 to execute it or replace it with your code. -# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. +from jit_oracle_connection import JitOracleConnection + +import argparse -def print_hi(name): - # Use a breakpoint in the code line below to debug your script. - print(f'Hi, {name}') # Press Strg+F8 to toggle the breakpoint. +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") -# Press the green button in the gutter to run the script. if __name__ == '__main__': - print_hi('PyCharm') - -# See PyCharm help at https://www.jetbrains.com/help/pycharm/ + main() \ No newline at end of file