Étant donné que le fichier de configuration de 30 fichiers est excellent et que tous sont soigneusement envoyés sous forme de fichiers séparés Je pensais qu'ouvrir chacun d'eux serait une violation des droits humains fondamentaux, alors j'ai demandé à python de le faire.
Mettez tous Excel dans un dossier, créez un python dans le même dossier, Décrivez tout le contenu sur la première feuille du fichier appelé all.xlsx.
.
├── all.xlsx #L'excel final
├── excel_merge.py #Python à faire cette fois
├── site-packages #Contient le package à utiliser. Seul numpy est utilisé cette fois.
│ ├── bin
│ ├── numpy
│ └── numpy-1.18.5.dist-info
├── hogehoge1.xlsx #Une grande quantité d'Excel envoyé poliment
├── hogehoge2.xlsx
・ ・ ・
└── hogehoge30.xlsx
pip install numpy -t site-packages/
Si vous spécifiez le nom du dossier avec -t, le fichier sera développé et installé sur place.
Écrivons et sauvegardons une source comme celle-ci
import os, sys, glob
sys.path.append(os.path.join(os.path.dirname(__file__), 'site-packages'))
import openpyxl as px
NEW_FILE = "all.xlsx"
#Obtenez tous les fichiers Excel
files = glob.glob("./*.xls*")
all_data = []
for f in files:
#Ignorez tout excel ouvert. tout.Ignorez xlsx même s'il existe.
if f.startswith('./~') or f == NEW_FILE:
continue
#Veuillez ouvrir Excel
wb=px.load_workbook(f, data_only=True)
#Veuillez ouvrir la feuille
ws = wb.worksheets[0]
#Lisez la feuille et obtenez toutes les lignes
for row in ws.iter_rows(min_row=2):
#S'il y a une ligne inutile, sautez-la.
if row[0].value is None or \
not str(row[0].value).strip() or \
row[1].value is None or \
row[0].value == 'nanika zyogai sitai mozi':
continue
values = []
#Obtenez des données en léchant toutes les cellules
for col in row:
values.append(col.value)
#Enregistrez toutes les données de cellule dans un seul tableau
all_data.append(values)
#D'ici tout.Travailler pour faire du xlsx
# print(all_data)
wb = px.Workbook()
ws = wb.worksheets[0]
start_row = 2
start_col = 3
#Ecrivez toutes les données de cellule dans l'ordre
for y, row in enumerate(all_data):
for x, cell in enumerate(row):
ws.cell(row=start_row + y,
column=start_col + x,
value=all_data[y][x])
#enregistrer sous
wb.save(NEW_FILE)
Recommended Posts