Excel optimiert
This commit is contained in:
parent
f0f034d7e4
commit
756cc93cfb
1 changed files with 99 additions and 0 deletions
|
|
@ -11,6 +11,7 @@ import subprocess
|
||||||
from shutil import which, copy2
|
from shutil import which, copy2
|
||||||
import platform
|
import platform
|
||||||
import logging
|
import logging
|
||||||
|
from openpyxl.styles import Font
|
||||||
|
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
# Logging
|
# Logging
|
||||||
|
|
@ -270,7 +271,9 @@ if sheet_name in wb.sheetnames:
|
||||||
|
|
||||||
ws = wb.create_sheet(sheet_name)
|
ws = wb.create_sheet(sheet_name)
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
# Kennzahlen
|
# Kennzahlen
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
total_income = sum(
|
total_income = sum(
|
||||||
values["income"]
|
values["income"]
|
||||||
|
|
@ -295,6 +298,10 @@ ws.append(["Saldo", total_saldo])
|
||||||
|
|
||||||
ws.append([])
|
ws.append([])
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Kategorien
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
ws.append([
|
ws.append([
|
||||||
"Kategorie",
|
"Kategorie",
|
||||||
"Einnahmen",
|
"Einnahmen",
|
||||||
|
|
@ -311,6 +318,61 @@ for category, values in sorted(category_totals.items()):
|
||||||
values["saldo"]
|
values["saldo"]
|
||||||
])
|
])
|
||||||
|
|
||||||
|
ws.append([])
|
||||||
|
ws.append([])
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Kontobewegungen
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
|
ws.append(["Kontobewegungen"])
|
||||||
|
|
||||||
|
ws.append([
|
||||||
|
"Datum",
|
||||||
|
"Betrag",
|
||||||
|
"Kategorie",
|
||||||
|
"Name",
|
||||||
|
"Verwendungszweck"
|
||||||
|
])
|
||||||
|
|
||||||
|
for transaction in categorized_transactions:
|
||||||
|
|
||||||
|
ws.append([
|
||||||
|
transaction["date"],
|
||||||
|
transaction["amount"],
|
||||||
|
transaction["category"],
|
||||||
|
transaction["applicant_name"],
|
||||||
|
transaction["purpose"]
|
||||||
|
])
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Formatierung KW-Blatt
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
|
# Kennzahlen-Überschrift
|
||||||
|
for cell in ws[1]:
|
||||||
|
cell.font = Font(bold=True)
|
||||||
|
|
||||||
|
# Kategorien-Überschrift suchen
|
||||||
|
for row in ws.iter_rows():
|
||||||
|
|
||||||
|
if row[0].value == "Kategorie":
|
||||||
|
|
||||||
|
for cell in row:
|
||||||
|
cell.font = Font(bold=True)
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
|
# Kontobewegungen-Überschrift suchen
|
||||||
|
for row in ws.iter_rows():
|
||||||
|
|
||||||
|
if row[0].value == "Datum":
|
||||||
|
|
||||||
|
for cell in row:
|
||||||
|
cell.font = Font(bold=True)
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
# Übersicht aktualisieren
|
# Übersicht aktualisieren
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
|
|
@ -327,6 +389,10 @@ overview.append([
|
||||||
"Saldo"
|
"Saldo"
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# Überschrift fett
|
||||||
|
for cell in overview[1]:
|
||||||
|
cell.font = Font(bold=True)
|
||||||
|
|
||||||
for sheet in sorted(
|
for sheet in sorted(
|
||||||
[s for s in wb.sheetnames if s.startswith("KW")]
|
[s for s in wb.sheetnames if s.startswith("KW")]
|
||||||
):
|
):
|
||||||
|
|
@ -344,6 +410,39 @@ for sheet in sorted(
|
||||||
saldo
|
saldo
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Spaltenbreiten automatisch anpassen
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
|
for worksheet in wb.worksheets:
|
||||||
|
|
||||||
|
for column in worksheet.columns:
|
||||||
|
|
||||||
|
max_length = 0
|
||||||
|
column_letter = column[0].column_letter
|
||||||
|
|
||||||
|
for cell in column:
|
||||||
|
|
||||||
|
try:
|
||||||
|
|
||||||
|
if cell.value:
|
||||||
|
|
||||||
|
max_length = max(
|
||||||
|
max_length,
|
||||||
|
len(str(cell.value))
|
||||||
|
)
|
||||||
|
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
worksheet.column_dimensions[
|
||||||
|
column_letter
|
||||||
|
].width = min(max_length + 2, 60)
|
||||||
|
|
||||||
|
# --------------------------------------------------
|
||||||
|
# Excel speichern
|
||||||
|
# --------------------------------------------------
|
||||||
|
|
||||||
wb.save(excel_file)
|
wb.save(excel_file)
|
||||||
|
|
||||||
# --------------------------------------------------
|
# --------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue