Création en masse de dossiers et documents - Version Pro
Introduction
Je vais présenter une approche différente pour la création en masse. Dans le travail, certains collègues rencontrent souvent des situations où ils doivent créer des dossiers ou des documents à partir d'un fichier Excel. J'espère que cela pourra être utile.
I. Objectif du projet
Lire les données spécifiques dans un fichier Excel et créer automatiquement des dossiers, des fichiers txt, docx, xlsx, etc., dans un répertoire donné, en utilisant les valeurs des cellules comme nom.
Les informations nécessaires à l'utilisateur sont :
- Chemin complet du fichier Excel
- Numéro de la feuille de calcul
- Ligne et colonne de départ
- Répertoire de destination
- Type de fichier à créer (dossier, txt, docx, xlsx)
II. Architecture générale
1. Importation des bibliothèques
Code :
from openpyxl import load_workbook
from openpyxl import Workbook
from docx import Document
import os
Ces modules seront utilisés plus tard.
2. Strucutre principale
Code :
......... # Entrées utilisateur
for ........: # Boucle principale
...... # Extraction des données Excel
if ......:
...... # Gestion des cellules vides
else:
..... # Création selon le type sélectionné
La première partie gère les entrées de l'utilisateur pour définir les règles de filtrage.
Ensuite, une boucle itère sur les lignes du fichier Excel.
La structure if-else permet d'exclure les cellules vides, et de créer les éléments selon le type choisi.
Passons maintenant au développement du code.
III. Module d'entrée utilisateur
Code :
print('Entrez le chemin complet du fichier Excel (exemple : E:\\BaiduNetdiskDownload\\bonjour.xlsx) : ', end='')
excel_path = input()
wb = load_workbook(excel_path)
print('Numéro de la feuille de calcul : ', end='')
sheet = int(input())
ws = wb.worksheets[sheet-1]
print(f'Colonne de départ dans la feuille {sheet} : ', end='')
col_num = int(input())
print(f'Ligne de départ dans la feuille {sheet} : ', end='')
row_num = int(input())
print('Répertoire de destination pour la création en masse (exemple : D:\\test) : ', end='')
parent_dir = input()
print('Type de création (1 : dossier, 2 : txt, 3 : docx, 4 : xlsx) : ', end='')
create_type = input()
Ce module correspond aux éléments mentionnés dans la section I. Il permet une sélection précise.
IV. Module de traitement des données
1. Récupération des données Excel
Code :
count = 0
for row in ws.iter_rows(min_row=row_num):
count += 1
value = row[col_num-1].value
ordered_value = f'{count}-{value}'
Cette partie lit chaque cellule dans la plage spécifiée.
2. Création des fichiers
Code :
if str(value) == 'None':
pass
else:
if create_type == '1':
name = str(ordered_value)
path = os.path.join(parent_dir, name)
os.makedirs(path, exist_ok=True)
name = f'{str(ordered_value)}.xlsx'
workbook = Workbook()
workbook.save(path)
elif create_type == '2':
name = f'{str(ordered_value)}.txt'
path = os.path.join(parent_dir, name)
with open(path, 'a'):
os.utime(path, None)
elif create_type == '3':
name = f'{str(ordered_value)}.docx'
path = os.path.join(parent_dir, name)
document = Document()
document.save(path)
Ce code est exécuté dans la boucle principale. Deux niveaux d'instructions if sont imbriqués.
Le premier vérifie si la cellule est vide.
Le second exécute l'action en fonction du type choisi par l'utilisateur.