001_01.py — Génération dynamique de classeur Excel
Cahier des charges⚓
1
# CDC 001_012
Code Python⚓
1
# TD_EDC_01_001_01.py2
# Résumé : calcule des chemins dynamiques (001_do/001_md), génère un classeur XLSX3
# portant le nom du script, écrit quelques valeurs de test et ouvre le fichier dans Excel.4
# Points clés : pathlib pour les chemins, xlsxwriter pour l'export, Popen pour lancer Excel.5
# imports gestion de fichiers6
from pathlib import Path
7
import subprocess
8
# import du module xlsxwriter9
import xlsxwriter
10
11
def build_paths() -> tuple[Path, Path]:
12
"""Return (xlsx_path, md_path) based on this script name.13
14
Both `001_do` (xlsx) and `001_md` (markdown) live alongside the folder `001`.15
"""16
script = Path(__file__).resolve()
17
root = script.parent.parent # folder containing 001 and its siblings
18
stem = script.stem
19
base_dir_name = script.parent.name # e.g., "001"
20
xlsx_dir = root / f"{base_dir_name}_do"
21
md_dir = root / f"{base_dir_name}_md"
22
xlsx_path = (xlsx_dir / f"{stem}.xlsx").resolve()
23
md_path = (md_dir / f"{stem}.md").resolve()
24
xlsx_path.parent.mkdir(parents=True, exist_ok=True)
25
md_path.parent.mkdir(parents=True, exist_ok=True)
26
return xlsx_path, md_path
27
28
29
xlsx_path, _ = build_paths()
30
workbook = xlsxwriter.Workbook(str(xlsx_path))
31
32
# Ajout de l'objet feuille en ajoutant une feuille via la méthode add_worksheet33
worksheet = workbook.add_worksheet("Feuille test")
34
35
# La méthode write permet d'écrire dans une cellule36
worksheet.write('A1', 'Bonjour') # type: ignore # on donne la référence de la cellule en notation A1
37
worksheet.write(0, 1, 'Mr') # on donne le n° de ligne et le n° de colonne
38
worksheet.write(0, 2, 'Toto')
39
40
# Fermer l'objet classeur.41
workbook.close()
42
# Code pour ouvrir Excel avec le classeur (après l'avoir fermé par exemple)43
subprocess.Popen(['start', 'excel', str(xlsx_path)], shell=True)
44
Documentation⚓
1
# 001_01.py — Génération dynamique de classeur Excel2
3
Ce script Python illustre la création automatisée d'un fichier Excel (.xlsx) dans le cadre d'un TD d'initiation à la manipulation de fichiers et de chemins dynamiques.
4
5
## Objectifs pédagogiques6
- Apprendre à manipuler les chemins de fichiers avec `pathlib`.
7
- Générer un fichier Excel avec le module `xlsxwriter`.
8
- Organiser les exports dans des dossiers dédiés (`001_do` pour les fichiers Excel, `001_md` pour les fichiers Markdown).
9
- Automatiser l'ouverture du fichier généré dans Excel.10
11
## Fonctionnement12
1. **Détermination des chemins dynamiques**
13
- Le script calcule automatiquement le chemin du fichier Excel à générer et du fichier Markdown associé, en fonction du nom du script et de la structure du projet.14
- Les dossiers de destination sont créés si besoin.15
16
2. **Création du classeur Excel**
17
- Un classeur `.xlsx` est créé dans le dossier `001_do`.
18
- Une feuille nommée "Feuille test" est ajoutée.19
- Quelques valeurs de test sont écrites dans les cellules ("Bonjour", "Mr", "Toto").20
21
3. **Ouverture du fichier dans Excel**
22
- (Optionnel) Le script peut ouvrir le fichier généré dans Excel via `subprocess.Popen` (non inclus dans l'extrait ci-dessus).
23
24
## Points techniques25
- Utilisation de `pathlib.Path` pour une gestion robuste des chemins.
26
- Utilisation de `xlsxwriter` pour l'export Excel.
27
- Structure de projet favorisant la séparation des données et des scripts.28
29
## Utilisation30
Ce script sert de modèle pour automatiser la génération de fichiers Excel à partir de données Python, tout en respectant une organisation claire des fichiers dans le projet.
31
32
---33
*Fichier généré automatiquement par GitHub Copilot (GPT-4.1) — 11/12/2025*