Excelexport in Jahresauswertung hinzugefügt

This commit is contained in:
hubobel 2026-06-15 18:55:17 +02:00
parent d0735c540e
commit 298a120e27

View file

@ -5,7 +5,7 @@ from datetime import datetime
import json import json
import csv import csv
import sys import sys
from openpyxl import Workbook from openpyxl import Workbook, load_workbook
# -------------------------------------------------- # --------------------------------------------------
# Kalenderwoche bestimmen # Kalenderwoche bestimmen
@ -49,12 +49,12 @@ source_json = (
categorized_csv_dir = year_dir / "categorized_csv" categorized_csv_dir = year_dir / "categorized_csv"
categorized_json_dir = year_dir / "categorized_json" categorized_json_dir = year_dir / "categorized_json"
summary_dir = year_dir / "summary" summary_dir = year_dir / "summary"
excel_dir = year_dir / "excel" jahresauswertung_dir = year_dir / "jahresauswertung"
categorized_csv_dir.mkdir(parents=True, exist_ok=True) categorized_csv_dir.mkdir(parents=True, exist_ok=True)
categorized_json_dir.mkdir(parents=True, exist_ok=True) categorized_json_dir.mkdir(parents=True, exist_ok=True)
summary_dir.mkdir(parents=True, exist_ok=True) summary_dir.mkdir(parents=True, exist_ok=True)
excel_dir.mkdir(parents=True, exist_ok=True) jahresauswertung_dir.mkdir(parents=True, exist_ok=True)
csv_file = ( csv_file = (
categorized_csv_dir categorized_csv_dir
@ -72,8 +72,8 @@ summary_file = (
) )
excel_file = ( excel_file = (
excel_dir jahresauswertung_dir
/ f"transactions_{year}_KW{week:02d}.xlsx" / f"Kontobewegungen_{year}.xlsx"
) )
# -------------------------------------------------- # --------------------------------------------------
@ -211,35 +211,51 @@ with open(json_file, "w", encoding="utf-8") as outfile:
) )
# -------------------------------------------------- # --------------------------------------------------
# Excel exportieren # Jahres-Excel aktualisieren
# -------------------------------------------------- # --------------------------------------------------
if excel_file.exists():
wb = load_workbook(excel_file)
else:
wb = Workbook() wb = Workbook()
ws1 = wb.active if "Sheet" in wb.sheetnames:
ws1.title = "Transaktionen" wb.remove(wb["Sheet"])
ws1.append([ sheet_name = f"KW{week:02d}"
"Datum",
"Betrag",
"Kategorie",
"Name",
"Verwendungszweck"
])
for t in categorized_transactions: # Vorhandenes Blatt ersetzen
ws1.append([ if sheet_name in wb.sheetnames:
t["date"], wb.remove(wb[sheet_name])
t["amount"],
t["category"],
t["applicant_name"],
t["purpose"]
])
ws2 = wb.create_sheet("Kategorien") ws = wb.create_sheet(sheet_name)
ws2.append([ # Kennzahlen
total_income = sum(
values["income"]
for values in category_totals.values()
)
total_expenses = sum(
values["expenses"]
for values in category_totals.values()
)
total_saldo = sum(
values["saldo"]
for values in category_totals.values()
)
ws.append(["Kennzahl", "Wert"])
ws.append(["Transaktionen", len(categorized_transactions)])
ws.append(["Einnahmen", total_income])
ws.append(["Ausgaben", total_expenses])
ws.append(["Saldo", total_saldo])
ws.append([])
ws.append([
"Kategorie", "Kategorie",
"Einnahmen", "Einnahmen",
"Ausgaben", "Ausgaben",
@ -247,15 +263,48 @@ ws2.append([
]) ])
for category, values in sorted(category_totals.items()): for category, values in sorted(category_totals.items()):
ws2.append([
ws.append([
category, category,
values["income"], values["income"],
values["expenses"], values["expenses"],
values["saldo"] values["saldo"]
]) ])
wb.save(excel_file) # --------------------------------------------------
# Übersicht aktualisieren
# --------------------------------------------------
if "Übersicht" in wb.sheetnames:
wb.remove(wb["Übersicht"])
overview = wb.create_sheet("Übersicht", 0)
overview.append([
"KW",
"Einnahmen",
"Ausgaben",
"Saldo"
])
for sheet in sorted(
[s for s in wb.sheetnames if s.startswith("KW")]
):
ws_kw = wb[sheet]
income = ws_kw["B3"].value
expenses = ws_kw["B4"].value
saldo = ws_kw["B5"].value
overview.append([
sheet,
income,
expenses,
saldo
])
wb.save(excel_file)
# -------------------------------------------------- # --------------------------------------------------
# Kategorien-Summen exportieren # Kategorien-Summen exportieren