diff --git a/CMDB2CSV_Aufbaumaster.py b/CMDB2CSV_Aufbaumaster.py index 6993c27d..ba57207a 100755 --- a/CMDB2CSV_Aufbaumaster.py +++ b/CMDB2CSV_Aufbaumaster.py @@ -4,6 +4,7 @@ import sys from pathlib import Path import pandas as pd from icecream import ic +import re import numpy as np @@ -46,24 +47,25 @@ class MainUI(QDialog): # erbt von QDialog def collect_grundgeraete(self): # Einlesen der Sheets - self.df_vte = pd.read_excel(self.filename, header=7, na_filter=False, sheet_name="VTE-Input", engine='pyxlsb', - usecols=['Hostname', 'Gruppierung', 'CONFIG-ID', 'CMDB Status']) - # print(self.df_vte.head) + self.df_vte = pd.read_excel(self.filename, header=7, na_filter=False, sheet_name='VTE-Input', + usecols=['Hostname', 'Gruppierung', 'CONFIG-ID', 'CMDB Status'], engine='pyxlsb') + self.df_cmdb = pd.read_excel(self.filename, header=2, sheet_name="CMDB", engine='pyxlsb') - # self.df_sw_asset = pd.read_excel(self.filename,sheet_name="SW-Asset", engine='pyxlsb') # Nach relevanten Spalten filtern self.df_vte = self.df_vte[self.df_vte['Gruppierung'] == 'Grundgerät'] - # self.df_vte = self.df_vte.drop(columns=['RAM','Bestelldatum','Hersteller','Lieferant','SAP-Nr.','Lieferdatum','Lieferschein-Nr.','WV-Start','WV-Ende','Aufgaben Schritt','Verkehrsart','Anz.\nHE ']) - self.df_cmdb = self.df_cmdb[self.df_cmdb['Filter'].isin(['Grundgerät', 'Erweiterung'])] + + self.df_cmdb = self.df_cmdb[self.df_cmdb['Filter'] == 'Grundgerät'] self.df_cmdb = self.df_cmdb.drop( columns=['WV-Start', 'WV-Ende', 'CMDB-Status', 'Aufgabe Schritt', 'Filter', 'Waermeabgabe [BTU/h]', 'kalk. Strom [A]']) + # Einfügen von Spalten in die CMDB-Tabelle self.dfb = self.df_vte.merge(self.df_cmdb, on=['Hostname'], how='left') + # Spalte für Mandanten Kontaktzuweisung self.dfb.insert(loc=7, column='Mandanten Kontaktzuweisung', value='Mandant') @@ -88,9 +90,17 @@ class MainUI(QDialog): # erbt von QDialog # Masseinheit self.dfb.insert(loc=18, column='Masseinheit', value='Zoll') + # Spaltenanmen mit Sonderzeichen anzeigen + columns_with_special_chars = [col for col in self.dfb.columns if self.has_special_characters(col)] + + print("Spaltenheader mit Sonderzeichen:", columns_with_special_chars) + # Führende Leerzeichen in allen Spalten entfernen self.dfb = self.dfb.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x) + # Alle Floats in Strings umwandeln + self.dfb = self.dfb.applymap(lambda x: str(x) if isinstance(x, float) else x) + self.dfb = self.dfb.apply(self.suche_Einschub, axis=1) self.dfb = self.dfb.apply(self.montageort, axis=1) @@ -105,15 +115,21 @@ class MainUI(QDialog): # erbt von QDialog ############################################################################################## #def collect_erweiterung(self): + def has_special_characters(self, s): + # Regex pattern für Sonderzeichen + return bool(re.search(r'[^A-Za-z0-9]', s)) + + def suche_Einschub(self, einschub): - if einschub['Montageort'][-1] in ('v' 'h'): + if einschub['Montageort'][-1] in ('v','h'): print (einschub['Montageort']) einschub['Einschub'] = einschub['Montageort'][-1] return einschub def montageort(self, montage): # Fehlerbereinigung - if montage['ID\nStandort'] not in ("Ber-PS", "Bon-BTW"): + ic(montage) + if montage['ID\nStandort']not in ("Ber-PS", "Bon-BTW"): print("Kein Standort P40 oder BTW") sys.exit(0) else: