Files
buchhaltung/analyze_tabelle1.py
T
2026-04-26 07:51:39 +02:00

113 lines
4.4 KiB
Python

#!/usr/bin/env python3
"""
Analysiert Sheet 'Tabelle1' - wahrscheinlich das Haupt-Sheet mit aktuellen Daten.
"""
import openpyxl
from datetime import datetime
datei = "Kopie von Kostenrechnung der Nächsten jahre (3).xlsx"
wb = openpyxl.load_workbook(datei, data_only=True)
sheet_name = "Tabelle1"
ws = wb[sheet_name]
print(f"=== SHEET: {sheet_name} ===")
print(f"Max Zeile: {ws.max_row}, Max Spalte: {ws.max_column}")
# Zeile 1-10: Headers
print("\n=== HEADER (Zeile 1-10) ===")
for row_idx in range(1, 11):
row_data = []
for col_idx in range(1, 20):
cell = ws.cell(row=row_idx, column=col_idx)
val = cell.value
if val:
if isinstance(val, str):
row_data.append((col_idx, val[:40]))
elif isinstance(val, (int, float)):
row_data.append((col_idx, f"{val:,.2f}"))
elif isinstance(val, datetime):
row_data.append((col_idx, val.strftime("%Y-%m")))
if row_data:
print(f"Zeile {row_idx}: {row_data}")
# Suche nach spezifischen Kreditnamen
print("\n=== SUCHE NACH KREDITNAMEN ===")
kredit_namen = ["DSL Bank", "PSD Nord", "Zingelstr", "PVCreditplus", "Sparkasse",
"Targo", "Köpke", "Kopke", "Restschuld", "Kredit"]
for row_idx in range(1, min(ws.max_row + 1, 200)):
for col_idx in range(1, min(ws.max_column + 1, 30)):
cell = ws.cell(row=row_idx, column=col_idx)
val = cell.value
if val and isinstance(val, str):
for kredit in kredit_namen:
if kredit.lower() in val.lower():
# Zeige die Zeile
row_context = []
for c in range(1, 15):
v = ws.cell(row=row_idx, column=c).value
if v:
if isinstance(v, str):
row_context.append(f"{v[:20]}")
elif isinstance(v, (int, float)):
row_context.append(f"{v:,.0f}")
print(f"\nZeile {row_idx}, Spalte {col_idx}: '{val}'")
print(f" Kontext: {row_context[:8]}")
# Suche nach großen Geldbeträgen (Restschulden > 1000)
print("\n=== GROSSE BETRÄGE (> 10000) IN ERSTEN 100 ZEILEN ===")
gross_betraege = []
for row_idx in range(1, min(ws.max_row + 1, 100)):
for col_idx in range(1, min(ws.max_column + 1, 30)):
cell = ws.cell(row=row_idx, column=col_idx)
val = cell.value
if val and isinstance(val, (int, float)) and val > 10000:
# Suche nach Label
label = None
for c in range(1, min(30, ws.max_column + 1)):
v = ws.cell(row=row_idx, column=c).value
if v and isinstance(v, str):
label = v
break
gross_betraege.append((row_idx, col_idx, val, label))
for row, col, val, label in gross_betraege[:20]:
print(f" Zeile {row}, Spalte {col}: {val:>15,.2f} EUR - Label: {label}")
# Suche nach den genauen Zielwerten
print("\n=== SUCHE NACH ZIELWERTEN (Toleranz 500 EUR) ===")
targets = [
("DSL Bank", 64656.88),
("PSD Nord", 50384.50),
("Zingelstr. 14 DSL", 24382.38),
("Zingelstr. 14 Sparkasse", 8140.11),
("PVCreditplus", 1666.53)
]
for row_idx in range(1, ws.max_row + 1):
for col_idx in range(1, min(ws.max_column + 1, 50)):
val = ws.cell(row=row_idx, column=col_idx).value
if val and isinstance(val, (int, float)):
for name, target in targets:
if abs(val - target) < 500:
print(f"\n {name}: {val:,.2f} bei Zeile {row_idx}, Spalte {col_idx}")
# Zeige die Zeile
row_vals = []
for c in range(1, 20):
v = ws.cell(row=row_idx, column=c).value
if v:
if isinstance(v, str):
row_vals.append(f"S{c}:{v[:15]}")
elif isinstance(v, (int, float)):
row_vals.append(f"S{c}:{v:,.0f}")
print(f" Zeile: {row_vals}")
# Zeige Header
headers = []
for c in range(1, 20):
h = ws.cell(row=1, column=c).value
if h:
headers.append(f"S{c}:{str(h)[:15]}")
print(f" Header: {headers}")