import openpyxl import sys from datetime import datetime import re import json # Excel-Datei laden datei = "Kopie von Kostenrechnung der Nächsten jahre (3).xlsx" print(f"Lade {datei}...") try: wb = openpyxl.load_workbook(datei, data_only=True) print("\n=== Verfügbare Sheets ===") for name in wb.sheetnames: print(f" - {name}") # Das Sheet "Tilgung bei Gleichbleibenden Be" laden sheet_name = "Tilgung bei Gleichbleibenden Be" if sheet_name in wb.sheetnames: ws = wb[sheet_name] print(f"\n=== Analyse: {sheet_name} ===") print(f"Bereich: {ws.dimensions}") print(f"Max Zeile: {ws.max_row}, Max Spalte: {ws.max_column}") else: print(f"Sheet '{sheet_name}' nicht gefunden!") print("Verfügbare Sheets:", wb.sheetnames) sys.exit(1) # Ersten 50 Zeilen anzeigen um Struktur zu verstehen print("\n=== Erste 30 Zeilen (für Struktur) ===") for row_idx, row in enumerate(ws.iter_rows(min_row=1, max_row=30, values_only=True), 1): non_empty = [str(cell)[:30] if cell is not None else "" for cell in row[:10]] if any(non_empty): print(f"Zeile {row_idx:2}: {non_empty}") # Nach Kreditnamen suchen - wir wissen die Kreditnamen kredit_namen = ["Targo Bank", "Köpke", "DSL Bank", "PSD Nord", "Zingelstr. 14", "Sparkasse", "Carola", "Kerstin", "PVCreditplus"] print("\n=== Suche nach Krediten ===") kredite_gefunden = {} for row_idx, row in enumerate(ws.iter_rows(min_row=1, max_row=ws.max_row, values_only=True), 1): for cell in row: if cell and isinstance(cell, str): for kredit_name in kredit_namen: if kredit_name.lower() in cell.lower(): # Zeile extrahieren row_data = list(row) print(f"\n🔍 Gefunden: '{kredit_name}' in Zeile {row_idx}") print(f" Zeile {row_idx}: {row_data[:15]}") kredite_gefunden[kredit_name] = { "zeile": row_idx, "daten": row_data } break # Nun detaillierte Analyse für jeden gefundenen Kredit print("\n\n" + "="*80) print("DETAILLIERTE KREDIT-ANALYSE") print("="*80) # Wir müssen die Struktur verstehen - oft sind Kredite untereinander # mit Header-Zeilen dazwischen # Alternative: Suche nach Mustern wie "Restschuld", "Monatsrate", etc. print("\n=== Suche nach Schlüsselwörtern ===") keywords = ["restschuld", "monatsrate", "rate", "zinssatz", "zins", "laufzeit", "betrag", "start"] for row_idx, row in enumerate(ws.iter_rows(min_row=1, max_row=100, values_only=True), 1): for cell in row: if cell and isinstance(cell, str): cell_lower = cell.lower() for kw in keywords: if kw in cell_lower: row_data = [str(c)[:25] if c is not None else "" for c in row[:12]] print(f"Zeile {row_idx:3} [{kw:12}]: {row_data}") break # Versuche konkrete Werte zu finden print("\n=== Suche nach konkreten Werten (Zahlen > 1000) ===") for row_idx, row in enumerate(ws.iter_rows(min_row=1, max_row=200, values_only=True), 1): numbers = [] for col_idx, cell in enumerate(row[:20], 1): if isinstance(cell, (int, float)) and cell > 1000: numbers.append(f"Col{col_idx}:{cell}") if numbers: # Zeile auch mit Text anzeigen texts = [str(c)[:20] for c in row[:5] if c and isinstance(c, str)] print(f"Zeile {row_idx:3}: {texts} | Zahlen: {numbers[:5]}") except Exception as e: print(f"Fehler: {e}") import traceback traceback.print_exc()