136 lines
4.5 KiB
Python
136 lines
4.5 KiB
Python
#!/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}")
|