Ich erhielt die Anfrage, jedes Blatt in eine Excel-Datei aufzuteilen. Ursprünglich denke ich, dass es sich um ein VBA-Projekt handelt, aber es ist mühsam, die Excel-Datei zu öffnen und das Makro zu starten. Oder besser gesagt, ich möchte überhaupt nicht VBA schreiben. Daher möchte ich in Python ein Tool erstellen, das mit der rechten Maustaste auf eine Excel-Datei klickt und diese für jedes Blatt in Dateien unterteilt.
Sie benötigen eine Bibliothek für die Arbeit mit Excel und eine Bibliothek zum Erstellen von Dateipfaden. Es ist nicht Standard, also installieren Sie es im Voraus.
$ 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 #Pfad des Ordners, in dem die Zieldatei Excel gespeichert ist
input_file = str(sys.argv[1]) #Konvertieren Sie den Excel-Dateipfad in eine Zeichenfolge
#Holen Sie sich eine Liste der Blätter(Verwenden Sie openpyxl)
book = openpyxl.load_workbook(input_file)
sheets_list = book.sheetnames
for i in range(len(sheets_list)):
#Starten Sie Excel
app = win32com.client.Dispatch("Excel.Application")
app.Visible = False
app.DisplayAlerts = False
#Arbeitsmappe in Excel importieren
sheet_no = i + 1 #Das Excel-Blatt addiert 1 für 1 Start
book = app.Workbooks.Open(input_file)
book.WorkSheets(sheet_no).Activate()
new_book = app.Workbooks.Add()
#Speichern Sie für jedes Blatt
new_file = sheets_list[i] + '.xlsx'
path_obj = pathlib.Path(excel_dir, new_file) #In Pfadobjekt konvertieren
output_file = path_obj.resolve() #In absoluten Pfad konvertieren
book.Worksheets(sheet_no).Copy(Before=new_book.Worksheets(1)) #Kopieren Sie das angegebene Blatt in eine neue Excel-Datei
new_book.SaveAs(str(output_file)) #Datei speichern
#Beenden Sie Excel
app.Quit()
Die py-Datei wird nicht abgelegt, wenn sie im sendto-Ordner abgelegt wird. Erstellen Sie eine Bat-Datei, um die erstellte Datei excel_split.py zu starten. * PowerShell ist ebenfalls akzeptabel.
excel_split.bat
python \\Wo soll die Python-Datei gespeichert werden?\excel_split.py
Speichern Sie die erstellte bat-Datei im sendto-Ordner. Der sendto-Ordner kann angezeigt werden, indem Sie gleichzeitig die Tasten [Win] und [R] drücken und "Shell: sendto" in das Suchfeld eingeben.
Klicken Sie mit der rechten Maustaste auf eine Excel-Datei → Senden → Klicken Sie auf excel_split.bat, um eine Datei für jedes Blatt in dieser Excel-Datei zu erstellen.
Wenn Sie es an Benutzer verteilen möchten, können Sie es ohne Bat-Datei starten, indem Sie die EXE-Version ebenfalls in den sendto-Ordner legen. Der folgende Artikel stellt die Methode der EXE-Konvertierung vor.
https://qiita.com/sw1394/items/2123fa9aaecb766657e5