#!/usr/bin/env python3 """ Liest Kreditdaten aus der Excel-Datei - Verbesserte Version. """ import openpyxl import json from datetime import datetime # Excel-Datei laden datei = "Kopie von Kostenrechnung der Nächsten jahre (3).xlsx" print(f"Lade {datei}...") wb = openpyxl.load_workbook(datei, data_only=True) # Sheet "Tilgung bei Gleichbleibenden Be" laden sheet_name = "Tilgung bei Gleichbleibenden Be" ws = wb[sheet_name] print(f"\n=== Sheet: {sheet_name} ===") print(f"Max Zeile: {ws.max_row}, Max Spalte: {ws.max_column}") # Zeile 1: Header mit Banknamen print("\n=== ZEILE 1: BANKNAMEN ===") banken = [] for col_idx in range(1, 25): cell = ws.cell(row=1, column=col_idx) val = cell.value if val: banken.append((col_idx, val)) print(f"Spalte {col_idx}: {val}") # Zeile 2: Labels (Restschuld, Tilgung, Zinsen, etc.) print("\n=== ZEILE 2: LABELS ===") labels = [] for col_idx in range(1, 25): cell = ws.cell(row=2, column=col_idx) val = cell.value if val: labels.append((col_idx, val)) print(f"Spalte {col_idx}: {val}") # Zeile 3-5: Mögliche Zinssätze oder weitere Metadaten print("\n=== ZEILEN 3-5: WEITERE METADATEN ===") for row_idx in range(3, 6): row_data = [] for col_idx in range(1, 25): cell = ws.cell(row=row_idx, column=col_idx) val = cell.value if val: if isinstance(val, str): row_data.append((col_idx, val[:30])) else: row_data.append((col_idx, val)) if row_data: print(f"Zeile {row_idx}: {row_data[:10]}") # Zeile 6: Sollte das Datum sein print("\n=== ZEILE 6: ERSTE DATENZEILE (Datum?) ===") for col_idx in range(1, 10): cell = ws.cell(row=6, column=col_idx) val = cell.value if val: print(f"Spalte {col_idx}: {val} (Typ: {type(val).__name__})") # Jetzt die Daten für jeden Kredit print("\n=== DATENEXTRAKTION FUER 5 KREDITE ===") # Kredit-Mapping basierend auf Zeile 1 # Zeile 1 zeigt: Spalte 1=Targo Bank, Spalte 5=Kopke, Spalte 9=DSL Bank, Spalte 13=PSD Nord # Jeder Kredit hat 4 Spalten: Restschuld, Tilgung, Zinsen, (Reserve/Monat) kredite = [ ("DSL Bank", 9), # Spalte 9 = DSL Bank (basierend auf Zeile 1) ("PSD Nord", 13), # Spalte 13 = PSD Nord ("Zingelstr. 14 DSL", None), # Muss gesucht werden ("Zingelstr. 14 Sparkasse", None), ("PVCreditplus", None) ] # Zeile 1 - alle Werte lesen row1_values = [] for col_idx in range(1, 45): cell = ws.cell(row=1, column=col_idx) val = cell.value if val: row1_values.append((col_idx, str(val))) print("\nAlle Werte in Zeile 1:") for col, val in row1_values: print(f" Spalte {col}: {val}") # Zeile 2 - alle Werte lesen (Labels) print("\nAlle Werte in Zeile 2 (Labels):") row2_values = [] for col_idx in range(1, 45): cell = ws.cell(row=2, column=col_idx) val = cell.value if val: row2_values.append((col_idx, str(val))) for col, val in row2_values[:15]: print(f" Spalte {col}: {val}") # Suche nach Zinssätzen print("\n=== SUCHE NACH ZINSSÄTZEN (Werte < 1 oder mit %) ===") for row_idx in range(1, 10): for col_idx in range(1, 45): cell = ws.cell(row=row_idx, column=col_idx) val = cell.value if val and isinstance(val, (int, float)): if 0.001 < val < 0.2: # Als Dezimal (0.02 = 2%) label = ws.cell(row=row_idx-1, column=col_idx).value if row_idx > 1 else None bank = ws.cell(row=1, column=col_idx).value print(f"Zeile {row_idx}, Spalte {col_idx}: {val} ({val*100:.2f}%) - Bank: {bank}, Label: {label}") elif 1 < val < 20: # Als Prozent direkt label = ws.cell(row=row_idx-1, column=col_idx).value if row_idx > 1 else None bank = ws.cell(row=1, column=col_idx).value print(f"Zeile {row_idx}, Spalte {col_idx}: {val}% - Bank: {bank}, Label: {label}") # Suche nach Zinssatz im Text print("\n=== SUCHE NACH 'ZINS' IM TEXT ===") for row_idx in range(1, 15): for col_idx in range(1, 45): cell = ws.cell(row=row_idx, column=col_idx) val = cell.value if val and isinstance(val, str) and "zins" in val.lower(): print(f"Zeile {row_idx}, Spalte {col_idx}: '{val}'") # Zeige Umgebung for r in range(row_idx, row_idx+2): vals = [] for c in range(col_idx, col_idx+5): v = ws.cell(row=r, column=c).value vals.append(str(v) if v else "-") print(f" Row {r}: {vals}")