Erzeugt einen sortierten DataFrame. Bei leerer Liste (z.B. SPS ohne Ausgänge) wird ein leerer DataFrame mit den erwarteten Spalten erzeugt, damit Sortierung und spätere Spaltenzugriffe nicht mit KeyError abbrechen.
This commit is contained in:
@@ -15,6 +15,7 @@ dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
.vscode/settings.json
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
|
||||
Vendored
+2
-1
@@ -3,5 +3,6 @@
|
||||
"cSpell.words": [
|
||||
"DXFATTRIBS",
|
||||
"ezdxf"
|
||||
]
|
||||
],
|
||||
"iis.configDir": ""
|
||||
}
|
||||
+19
-6
@@ -10,6 +10,16 @@ class ExcelConverter:
|
||||
self.eingaenge_identifier = ["FDI", "B", "S", "E", "I", "DI", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BJ", "BK", "BL", "BM", "BN", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "FA", "FB", "FC", "FD", "FE", "FF", "FG", "FH", "FJ", "FK", "FL", "FM", "FN", "FP", "FQ", "FR", "FS", "FT", "FU", "FV", "FW", "FX", "FY", "FZ", "SA", "SB", "SC", "SD", "SE", "SF", "SG", "SH", "SJ", "SK", "SL", "SM", "SN", "SP", "SQ", "SR", "SS", "ST", "SU", "SV", "SW", "SX", "SY", "SZ"]
|
||||
self.ausgaenge_identifier = ["K", "O", "Q", "M", "A", "P", "DQ", "CA", "CB", "CC", "CD", "CE", "CF", "CG", "CH", "CJ", "CK", "CL", "CM", "CN", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", "CW", "CX", "CY", "CZ", "EA", "EB", "EC", "ED", "EE", "EF", "EG", "EH", "EJ", "EK", "EL", "EM", "EN", "EP", "EQ", "ER", "ES", "ET", "EU", "EV", "EW", "EX", "EY", "EZ", "GA", "GB", "GC", "GD", "GE", "GF", "GG", "GH", "GJ", "GK", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GV", "GW", "GX", "GY", "GZ", "HA", "HB", "HC", "HD", "HE", "HF", "HG", "HH", "HJ", "HK", "HL", "HM", "HN", "HP", "HQ", "HR", "HS", "HT", "HU", "HV", "HW", "HX", "HY", "HZ", "KA", "KB", "KC", "KD", "KE", "KF", "KG", "KH", "KJ", "KK", "KL", "KM", "KN", "KP", "KQ", "KR", "KS", "KT", "KU", "KV", "KW", "KX", "KY", "KZ", "MA", "MB", "MC", "MD", "ME", "MF", "MG", "MH", "MJ", "MK", "ML", "MM", "MN", "MP", "MQ", "MR", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "PA", "PB", "PC", "PD", "PE", "PF", "PG", "PH", "PJ", "PK", "PL", "PM", "PN", "PP", "PQ", "PR", "PS", "PT", "PU", "PV", "PW", "PX", "PY", "PZ", "QA", "QB", "QC", "QD", "QE", "QF", "QG", "QH", "QJ", "QK", "QL", "QM", "QN", "QP", "QQ", "QR", "QS", "QT", "QU", "QV", "QW", "QX", "QY", "QZ", "RA", "RB", "RC", "RD", "RE", "RF", "RG", "RH", "RJ", "RK", "RL", "RM", "RN", "RP", "RQ", "RR", "RS", "RT", "RU", "RV", "RW", "RX", "RY", "RZ", "TA", "TB", "TC", "TD", "TE", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TP", "TQ", "TR", "TS", "TT", "TU", "TV", "TW", "TX", "TY", "TZ"]
|
||||
|
||||
def _sortierter_df(self, eintraege, sortierung, spalten):
|
||||
"""
|
||||
Erzeugt einen sortierten DataFrame. Bei leerer Liste (z.B. SPS ohne Ausgänge)
|
||||
wird ein leerer DataFrame mit den erwarteten Spalten erzeugt, damit Sortierung
|
||||
und spätere Spaltenzugriffe nicht mit KeyError abbrechen.
|
||||
"""
|
||||
if not eintraege:
|
||||
return pd.DataFrame(columns=spalten)
|
||||
return pd.DataFrame(eintraege).sort_values(by=sortierung)
|
||||
|
||||
def _gleiche_finden(self, liste):
|
||||
counter = {}
|
||||
for eintrag in liste:
|
||||
@@ -147,8 +157,9 @@ class ExcelConverter:
|
||||
gleiche_ausgaenge, ausgaenge = self._verarbeite_io_liste(ausgaenge)
|
||||
|
||||
# DataFrames erzeugen u. sortieren
|
||||
df_eingaenge = pd.DataFrame(eingaenge).sort_values(by="Name")
|
||||
df_ausgaenge = pd.DataFrame(ausgaenge).sort_values(by="Name")
|
||||
spalten = ['Name', 'Kommentar', 'Zeile']
|
||||
df_eingaenge = self._sortierter_df(eingaenge, "Name", spalten)
|
||||
df_ausgaenge = self._sortierter_df(ausgaenge, "Name", spalten)
|
||||
|
||||
df_gleiche_eingaenge = pd.DataFrame(gleiche_eingaenge).sort_values(by="Name") if gleiche_eingaenge else pd.DataFrame()
|
||||
df_gleiche_ausgaenge = pd.DataFrame(gleiche_ausgaenge).sort_values(by="Name") if gleiche_ausgaenge else pd.DataFrame()
|
||||
@@ -218,8 +229,9 @@ class ExcelConverter:
|
||||
gleiche_ausgaenge, ausgaenge = self._verarbeite_io_liste(ausgaenge)
|
||||
|
||||
# DataFrames erstellen u. sortieren
|
||||
df_eingaenge = pd.DataFrame(eingaenge).sort_values(by="Zahl")
|
||||
df_ausgaenge = pd.DataFrame(ausgaenge).sort_values(by="Zahl")
|
||||
spalten = ['Name', 'NameOriginal', 'NameConstant', 'Kommentar', 'Zahl', 'Zeile']
|
||||
df_eingaenge = self._sortierter_df(eingaenge, "Zahl", spalten)
|
||||
df_ausgaenge = self._sortierter_df(ausgaenge, "Zahl", spalten)
|
||||
|
||||
df_gleiche_eingaenge = pd.DataFrame(gleiche_eingaenge).sort_values(by="Zahl") if gleiche_eingaenge else pd.DataFrame()
|
||||
df_gleiche_ausgaenge = pd.DataFrame(gleiche_ausgaenge).sort_values(by="Zahl") if gleiche_ausgaenge else pd.DataFrame()
|
||||
@@ -362,8 +374,9 @@ class ExcelConverter:
|
||||
gleiche_ausgaenge, ausgaenge = self._verarbeite_io_liste(ausgaenge)
|
||||
|
||||
# DataFrames erzeugen u. sortieren
|
||||
df_eingaenge = pd.DataFrame(eingaenge).sort_values(by="Name")
|
||||
df_ausgaenge = pd.DataFrame(ausgaenge).sort_values(by="Name")
|
||||
spalten = ['Name', 'Kommentar', 'Zeile', 'Bezug']
|
||||
df_eingaenge = self._sortierter_df(eingaenge, "Name", spalten)
|
||||
df_ausgaenge = self._sortierter_df(ausgaenge, "Name", spalten)
|
||||
|
||||
df_gleiche_eingaenge = pd.DataFrame(gleiche_eingaenge).sort_values(by="Name") if gleiche_eingaenge else pd.DataFrame()
|
||||
df_gleiche_ausgaenge = pd.DataFrame(gleiche_ausgaenge).sort_values(by="Name") if gleiche_ausgaenge else pd.DataFrame()
|
||||
|
||||
+1
-1
@@ -118,7 +118,7 @@ def do_export(conv_obj:ExcelConverter, mode_str, base_input, output_dir, lines,
|
||||
conv_obj.export_excel(lines, export_type, export_path, getpos_errors, getpos_warnings)
|
||||
print(f"Export '{export_type}' erfolgreich: {export_path}")
|
||||
except Exception as e:
|
||||
print(f"Fehler bei Export '{export_type}': {e}")
|
||||
print(f"Fehler bei Export '{export_type}' ({export_path}): {type(e).__name__}: {e}")
|
||||
|
||||
def do_exports(converter, export_mode, output_dir, base_input, lines, getpos_errors=None, getpos_warnings=None):
|
||||
if export_mode:
|
||||
|
||||
Reference in New Issue
Block a user