J'ai reçu une demande de fractionnement de chaque feuille dans un fichier Excel. À l'origine, je pense que c'est un projet VBA, mais il est difficile d'ouvrir le fichier Excel et de démarrer la macro. Ou plutôt, je ne veux pas écrire VBA en premier lieu. Donc, j'aimerais créer un outil en Python qui clique avec le bouton droit sur un fichier Excel et le divise en fichiers pour chaque feuille.
Vous aurez besoin d'une bibliothèque pour travailler avec Excel et d'une bibliothèque pour créer des chemins de fichiers. Ce n'est pas standard, alors installez-le à l'avance.
$ pip install win32com.client
$ pip install pathlib
$ pip install openpyxl
excel_split.py
import os
import glob
import win32com.client
import pathlib
import openpyxl
import sys
excel_dir = pathlib.Path(sys.argv[1]).parent #Chemin du dossier dans lequel le fichier Excel cible est enregistré
input_file = str(sys.argv[1]) #Convertir le chemin du fichier Excel en chaîne
#Obtenez une liste de feuilles(Utilisez openpyxl)
book = openpyxl.load_workbook(input_file)
sheets_list = book.sheetnames
for i in range(len(sheets_list)):
#Démarrez Excel
app = win32com.client.Dispatch("Excel.Application")
app.Visible = False
app.DisplayAlerts = False
#Importer un classeur dans Excel
sheet_no = i + 1 #La feuille Excel ajoute 1 pour 1 départ
book = app.Workbooks.Open(input_file)
book.WorkSheets(sheet_no).Activate()
new_book = app.Workbooks.Add()
#Enregistrer pour chaque feuille
new_file = sheets_list[i] + '.xlsx'
path_obj = pathlib.Path(excel_dir, new_file) #Convertir en objet chemin
output_file = path_obj.resolve() #Convertir en chemin absolu
book.Worksheets(sheet_no).Copy(Before=new_book.Worksheets(1)) #Copiez la feuille spécifiée dans un nouveau fichier Excel
new_book.SaveAs(str(output_file)) #Enregistrer le fichier
#Quitter Excel
app.Quit()
Le fichier py n'est pas kické lorsqu'il est placé dans le dossier sendto. Créez un fichier bat pour lancer le fichier excel_split.py créé. * PowerShell est également acceptable.
excel_split.bat
python \\Où enregistrer le fichier Python\excel_split.py
Enregistrez le fichier chauve-souris créé dans le dossier sendto. Le dossier sendto peut être affiché en appuyant simultanément sur les touches [Win] et [R] et en saisissant "shell: sendto" dans la zone de recherche.
Cliquez avec le bouton droit sur un fichier Excel → envoyer → cliquez sur excel_split.bat pour créer un fichier pour chaque feuille de ce fichier Excel.
Si vous souhaitez le distribuer aux utilisateurs, vous pouvez le démarrer sans fichier bat en plaçant également la version EXE dans le dossier sendto. L'article suivant présente la méthode de conversion EXE.
https://qiita.com/sw1394/items/2123fa9aaecb766657e5
Recommended Posts