001_01.py — Génération dynamique de classeur Excel

Cahier des charges

1
# CDC 001_01
2

Code Python

1
# TD_EDC_01_001_01.py
2
# Résumé : calcule des chemins dynamiques (001_do/001_md), génère un classeur XLSX
3
# 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 fichiers
6
from pathlib import Path
7
import subprocess
8
# import du module xlsxwriter
9
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_worksheet
33
worksheet = workbook.add_worksheet("Feuille test")
34
 
35
# La méthode write permet d'écrire dans une cellule
36
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 Excel
2
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édagogiques
6
- 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
## Fonctionnement
12
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 techniques
25
- 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
## Utilisation
30
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*