Files
Assistent/excel_to_json.py
SimolZimol c1da1d0593 modified: .gitignore
modified:   background_data.json
	modified:   excel_to_json.py
2025-06-18 21:27:03 +02:00

49 lines
1.9 KiB
Python

import pandas as pd
import json
import os
import re
from collections import defaultdict
root_dir = "exel_datein"
# Passe das Pattern an: Jahr/Monat/Tag
date_pattern = re.compile(r'(\d{4})[\\/](\d{2})[\\/](\d{1,2})')
# Dict für Sammeln: (Kunde, Jahr, Monat, Tag) -> [Infos]
grouped_notes = defaultdict(list)
for dirpath, _, filenames in os.walk(root_dir):
for filename in filenames:
if filename.lower().endswith(('.xlsx', '.xls')):
excel_path = os.path.join(dirpath, filename)
# Versuche, Jahr, Monat und Tag aus dem Pfad zu extrahieren
match = date_pattern.search(excel_path)
if match:
jahr, monat, tag = match.groups()
else:
jahr = monat = tag = "unbekannt"
try:
# Lese beide Spalten, ohne Header
df = pd.read_excel(excel_path, sheet_name=0, usecols=[0, 1], header=None, names=["Kunde", "Info"])
# Fülle fehlende Kundennamen nach unten auf
df["Kunde"] = df["Kunde"].ffill()
# Entferne Zeilen, bei denen Info leer ist
df = df.dropna(subset=["Info"])
for _, row in df.iterrows():
key = (row['Kunde'], jahr, monat, tag)
grouped_notes[key].append(str(row['Info']))
print(f"Verarbeitet: {excel_path}")
except Exception as e:
print(f"Fehler bei {excel_path}: {e}")
# Jetzt zusammenfassen: Ein Eintrag pro Kunde/Jahr/Monat/Tag
all_notes = []
for (kunde, jahr, monat, tag), infos in grouped_notes.items():
info_text = "".join(infos)
note = f"{kunde}: {info_text} (Jahr: {jahr}, Monat: {monat}, Tag: {tag})"
all_notes.append(note)
# Alles als JSON speichern
with open("background_data.json", "w", encoding="utf-8") as f:
json.dump(all_notes, f, ensure_ascii=False, indent=2)
print("Alle Daten erfolgreich als background_data.json gespeichert.")