add README
This commit is contained in:
1 parent
3f6528e9f5
commit
f716feaa3e
1 file changed
+168
@@ -0,0 +1,168 @@
|
||||
# Anwesenheit PDF Generator
|
||||
|
||||
Liest Anwesenheitsdaten aus einer Excel-Datei (`.xlsx`) und erzeugt für jeden Teilnehmer eine ausgefüllte PDF-Datei (SAB-Formular).
|
||||
|
||||
---
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- Python 3.10 oder höher
|
||||
- pip
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Abhängigkeiten installieren
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
Für Entwicklung inkl. Tests:
|
||||
|
||||
```bash
|
||||
pip install -r requirements-dev.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Vor dem ersten Start müssen zwei Werte in `config.json` eingetragen werden:
|
||||
|
||||
| Feld | Beschreibung |
|
||||
|---|---|
|
||||
| `antragsnummer` | SAB-Antragsnummer der Einrichtung |
|
||||
| `ort` | Ort für die Unterschriftszeile im PDF |
|
||||
|
||||
Alle anderen Felder sind vorbelegt und müssen nur bei abweichender Excel-Struktur angepasst werden.
|
||||
|
||||
---
|
||||
|
||||
## Verzeichnisstruktur
|
||||
|
||||
```
|
||||
generate.py ← Einstiegspunkt
|
||||
config.json ← Konfiguration
|
||||
input/ ← Excel-Dateien ablegen
|
||||
template/
|
||||
sab.pdf ← PDF-Vorlage (muss vorhanden sein)
|
||||
output/ ← Generierte PDFs (werden hier abgelegt)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Verwendung
|
||||
|
||||
### Generierung starten
|
||||
|
||||
```bash
|
||||
python generate.py generate --file "input/Anwesenheitsliste 2026.xlsx" --month Feb
|
||||
```
|
||||
|
||||
Das Programm zeigt vor der Generierung eine Vorschau und fragt zur Bestätigung:
|
||||
|
||||
```
|
||||
=== Vorschau der ermittelten Werte ===
|
||||
Excel-Datei : Anwesenheitsliste 2026.xlsx
|
||||
Jahr : 2026
|
||||
Monat : Feb (02)
|
||||
Antragsnummer : 12345
|
||||
Ort : Leipzig
|
||||
Erstelldatum : 27.03.2026
|
||||
Teilnehmer : 49
|
||||
Fehler : 0
|
||||
|
||||
Möchten Sie die PDF-Generierung starten? [j/N]
|
||||
```
|
||||
|
||||
Nur bei Eingabe von `j` werden PDFs geschrieben.
|
||||
|
||||
### Nur Validierung (keine PDFs erzeugen)
|
||||
|
||||
```bash
|
||||
python generate.py validate --file "input/Anwesenheitsliste 2026.xlsx" --month Feb
|
||||
```
|
||||
|
||||
Führt alle Prüfungen durch und zeigt die Vorschau — ohne Dateien zu schreiben.
|
||||
|
||||
---
|
||||
|
||||
## Optionen
|
||||
|
||||
### `generate`
|
||||
|
||||
| Option | Pflicht | Beschreibung |
|
||||
|---|---|---|
|
||||
| `--file` | ja | Pfad zur Excel-Datei |
|
||||
| `--month` | ja | Name des Monats-Sheets (z. B. `Jan`, `Feb`, `Mrz`, `Apr` …) |
|
||||
| `--out` | nein | Ausgabeverzeichnis (Standard: `output/` aus `config.json`) |
|
||||
|
||||
### `validate`
|
||||
|
||||
| Option | Pflicht | Beschreibung |
|
||||
|---|---|---|
|
||||
| `--file` | ja | Pfad zur Excel-Datei |
|
||||
| `--month` | ja | Name des Monats-Sheets |
|
||||
|
||||
---
|
||||
|
||||
## Sheet-Namen
|
||||
|
||||
Die deutschen Monatsabkürzungen entsprechen den Tabellenblatt-Namen in der Excel-Datei:
|
||||
|
||||
| Sheet | Monat |
|
||||
|---|---|
|
||||
| `Jan` | Januar |
|
||||
| `Feb` | Februar |
|
||||
| `Mrz` | März |
|
||||
| `Apr` | April |
|
||||
| `Mai` | Mai |
|
||||
| `Jun` | Juni |
|
||||
| `Jul` | Juli |
|
||||
| `Aug` | August |
|
||||
| `Sep` | September |
|
||||
| `Okt` | Oktober |
|
||||
| `Nov` | November |
|
||||
| `Dez` | Dezember |
|
||||
|
||||
---
|
||||
|
||||
## Ausgabe
|
||||
|
||||
Für jeden Teilnehmer wird eine PDF-Datei erstellt:
|
||||
|
||||
```
|
||||
output/
|
||||
(1) Mustermann, Max.pdf
|
||||
(2) Beispiel, Anna.pdf
|
||||
...
|
||||
```
|
||||
|
||||
Die laufende Nummer entspricht der Nummerierung in Spalte A der Excel-Datei.
|
||||
|
||||
---
|
||||
|
||||
## Tests ausführen
|
||||
|
||||
```bash
|
||||
pytest tests/ -v
|
||||
```
|
||||
|
||||
Die Tests benötigen keine echten Excel- oder PDF-Dateien und laufen vollständig mit synthetischen Daten.
|
||||
|
||||
---
|
||||
|
||||
## Validierungsprüfungen
|
||||
|
||||
Das Programm prüft vor jeder Generierung:
|
||||
|
||||
1. `config.json` vorhanden und vollständig
|
||||
2. Excel-Datei existiert und ist eine `.xlsx`/`.xlsm`-Datei
|
||||
3. Jahr aus Dateiname extrahierbar (z. B. `Anwesenheitsliste 2026.xlsx`)
|
||||
4. Sheet-Name bekannt (in `month_mapping` der `config.json`)
|
||||
5. Sheet existiert in der Arbeitsmappe
|
||||
6. Spalte A (lfd. Nummer) enthält Daten
|
||||
7. Headerzeile mit `Name, Vorname` gefunden
|
||||
8. Tagesspalten ab Spaltenindex 9 vorhanden
|
||||
9. PDF-Template unter `template/sab.pdf` erreichbar
|
||||
Reference in new issue
Block a user