J'ai créé un outil en Python qui clique avec le bouton droit sur un fichier Excel et le divise en fichiers pour chaque feuille.

but de fond

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.

Installer une bibliothèque externe

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

code

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()

Créer un fichier chauve-souris

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

Enregistrer dans le dossier Sendto

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.

Comment utiliser

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. 無題.png

Supplément: Si vous souhaitez convertir en EXE et distribuer aux utilisateurs

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

J'ai créé un outil en Python qui clique avec le bouton droit sur un fichier Excel et le divise en fichiers pour chaque feuille.
J'ai créé un bot Discord en Python qui se traduit quand il réagit
Un programme python qui redimensionne une vidéo et la transforme en image
J'ai créé un fichier de dictionnaire python pour Neocomplete
Divisez chaque diapositive PowerPoint en un fichier JPG et exportez-le avec python
[Python] J'ai créé un script qui coupe et colle automatiquement les fichiers du PC local sur un SSD externe.
J'ai créé une VM qui exécute OpenCV pour Python
Une fonction qui divise l'itérable en N morceaux en Python
J'ai créé un programme automatisé pour coller du squishy dans Excel
Création d'un toolver qui crache le système d'exploitation, Python, les modules et les versions d'outils à Markdown
J'ai créé un outil qui facilite un peu la création et l'installation d'une clé publique.
J'ai créé un script en Python pour convertir un fichier texte pour JSON (pour l'extrait d'utilisateur vscode)
Création d'un outil qui facilite la définition des paramètres des modèles d'apprentissage automatique
Code et leçons apprises pour les fonctions qui ouvrent des dossiers Windows spéciaux dans les ctypes Python3
Python> J'ai créé un code de test pour mon propre fichier externe
J'ai créé beaucoup de fichiers pour la connexion RDP avec Python
Lire la feuille Excel et le processus en boucle ligne par ligne Python VBA
J'ai essayé de créer un outil d'échafaudage pour le framework Web Python Bottle
Obtenez la formule dans le fichier Excel sous forme de chaîne en Python
[python] J'ai créé une classe qui peut écrire rapidement une arborescence de fichiers
J'ai écrit un tri-arbre qui peut être utilisé pour l'implémentation de dictionnaire à grande vitesse en langage D et Python
J'ai créé un script POST pour créer un problème sur Github et l'enregistrer dans le projet
Un script qui récupère les tweets avec Python, les enregistre dans un fichier externe et effectue une analyse morphologique.
J'ai créé une application Web en Python qui convertit Markdown en HTML
Celui qui divise le fichier csv, le lit et le traite en parallèle
J'ai créé un outil CLI pour convertir les images de chaque répertoire en PDF
Je veux colorer une partie de la chaîne Excel avec Python
J'ai créé un script en python pour convertir des fichiers .md au format Scrapbox
Ouvrez un fichier Excel en Python et coloriez la carte du Japon
J'ai créé un outil qui facilite un peu la décompression avec CLI (Python3)
[IOS] J'ai créé un widget qui affiche la tendance de Qiita dans Pythonista3. [Python]
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai fait un programme de gestion de la paie en Python!
J'ai créé un outil de mot de passe en Python.
J'ai créé un fichier de configuration avec Python
[Python] J'ai créé une application qui télécharge automatiquement le fichier audio de chaque mot utilisé pour l'application d'étude d'anglais.
Comment enregistrer les informations de point caractéristique de l'image dans un fichier et l'utiliser pour la mise en correspondance
J'ai créé un programme en Python qui lit les données FX CSV et crée un grand nombre d'images de graphiques
J'ai créé un système qui décide automatiquement de s'exécuter demain avec Python et l'ajoute à Google Agenda.
J'ai créé un outil pour informer Slack des événements Connpass et en ai fait Terraform
[Python, PyPDF2] Un script qui divise un PDF étalé en deux à gauche et à droite
Je veux écrire un élément dans un fichier avec numpy et le vérifier.
[Python] Combiner des listes contenant des nombres en chaînes et les écrire dans un fichier de sortie
Notez que je comprends l'algorithme des moindres carrés. Et je l'ai écrit en Python.
[Python] J'ai créé un LINE Bot qui détecte les visages et effectue le traitement de la mosaïque.
J'ai créé un outil de bonus par les pairs en interne (agrégation uniquement) en utilisant Python et BigQuery
En Python, j'ai créé un LINE Bot qui envoie des informations sur le pollen à partir des informations de localisation.
Un mémo que j'ai écrit un tri rapide en Python
J'ai créé un outil utile pour Digital Ocean
J'ai écrit une classe en Python3 et Java
J'ai créé un programme cryptographique César en Python.
Script Python qui explore le flux RSS du statut Azure et le publie sur Hipchat
J'ai créé un programme pour convertir des images en art ASCII avec Python et OpenCV
J'ai créé et publié une image Docker qui lit RSS et tweete automatiquement régulièrement.
Créez un fichier exe qui fonctionne dans un environnement Windows sans Python avec PyInstaller
Une note qui implémente une tâche en Python qui charge un fichier GCS dans BigQuery
Création d'une application Web qui mappe les informations sur les événements informatiques avec Vue et Flask