49 lines
1.9 KiB
Python
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.") |