Da 30 Einstellungsdateien Excel sind und alle sorgfältig als separate Dateien gesendet werden Ich dachte, dass das Öffnen jedes einzelnen eine Verletzung der grundlegenden Menschenrechte darstellen würde, also bat ich Python, dies zu tun.
Legen Sie das gesamte Excel in einen Ordner, erstellen Sie eine Python im selben Ordner. Beschreiben Sie den gesamten Inhalt des ersten Blattes der Datei mit dem Namen all.xlsx.
.
├── all.xlsx #Das endgültige Excel
├── excel_merge.py #Python, um diesmal zu machen
├── site-packages #Enthält das zu verwendende Paket. Diesmal wird nur Numpy verwendet.
│ ├── bin
│ ├── numpy
│ └── numpy-1.18.5.dist-info
├── hogehoge1.xlsx #Eine große Menge von Excel höflich gesendet
├── hogehoge2.xlsx
・ ・ ・
└── hogehoge30.xlsx
pip install numpy -t site-packages/
Wenn Sie den Ordnernamen mit -t angeben, wird die Datei vor Ort erweitert und installiert.
Lassen Sie uns eine Quelle wie diese schreiben und speichern
import os, sys, glob
sys.path.append(os.path.join(os.path.dirname(__file__), 'site-packages'))
import openpyxl as px
NEW_FILE = "all.xlsx"
#Holen Sie sich alle Excel-Dateien
files = glob.glob("./*.xls*")
all_data = []
for f in files:
#Ignorieren Sie alle offenen Excel. alles.Ignoriere xlsx, auch wenn es existiert.
if f.startswith('./~') or f == NEW_FILE:
continue
#Bitte öffnen Sie Excel
wb=px.load_workbook(f, data_only=True)
#Bitte öffnen Sie das Blatt
ws = wb.worksheets[0]
#Lesen Sie das Blatt und erhalten Sie alle Zeilen
for row in ws.iter_rows(min_row=2):
#Wenn eine unnötige Zeile vorhanden ist, überspringen Sie diese.
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 = []
#Holen Sie sich Daten, indem Sie alle Zellen lecken
for col in row:
values.append(col.value)
#Speichern Sie alle Zellendaten in einem Array
all_data.append(values)
#Von hier aus alle.Arbeite daran, xlsx zu machen
# print(all_data)
wb = px.Workbook()
ws = wb.worksheets[0]
start_row = 2
start_col = 3
#Schreiben Sie alle Zellendaten der Reihe nach
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])
#speichern als
wb.save(NEW_FILE)
Recommended Posts