Ich habe hier ein paar Fragen gelesen über das Lesen großer Excel-Dateien mit openpyxl und dem Parameter read_only in load_workbook(), und ich habe es erfolgreich mit Source excels getan 50x30, aber wenn ich versuche, es in einer Arbeitsmappe mit einem 30x1100-Blatt zu tun, wird es stagnieren. Im Moment liest es einfach das Excel ein und überträgt es in ein mehrdimensionales Array.Lesen von 300k Zellen in Excel mit read_only in openpyxl nicht genug
from openpyxl import Workbook
from openpyxl import load_workbook
def transferCols(refws,mx,refCol,newCol,header):
rmax = refws.max_row
for r in range(1, rmax+1):
if (r == 1):
mx[r-1][newCol-1] = header
else:
mx[r-1][newCol-1] = refws.cell(row = r, column = refCol).value
return
ref_wb = load_workbook("UESfull.xlsx", read_only= True)
ref_ws = ref_wb.active
rmax = ref_ws.max_row
matrix = [["fill" for col in range(30)] for row in range(rmax)]
print("step ", 1)
transferCols(ref_ws,matrix,1,1,"URL")
...
Ich habe nur die print („Schritt“), um den Fortschritt zu verfolgen, aber überraschend, stirbt ab er bei Schritt 1! Ich weiß nur nicht, ob die Struktur schlecht ist oder ob 300k Zellen zu viel für openpyx sind. Ich habe noch nicht einmal angefangen, zu meinem Put-Excel zu schreiben! Danke im Voraus!
Gibt es auch etwas nicht gedruckt werden, wenn Sie das [Grund Nur-Lese-Beispiel] verwenden (https://openpyxl.readthedocs.org/en/default/optimized.html) aus den Dokumenten? Wenn es sich um ein einfaches 2D-Blatt handelt, würde ich es wahrscheinlich als CSV-Datei in Microsoft Office speichern und Zeile für Zeile in Python lesen. – jDo
Was beabsichtigen Sie nach dem Lesen mit den Daten? Sie können eine Lösung mit 'Pandas' haben – Abbas
Hallo @Abbas, danke für das Engagement! Ich bin hier wirklich festgefahren. Ich muss ein großes 2D-Excel-Blatt einlesen, die Daten so bereinigen, dass alle Einträge ein einheitliches Format haben, und sie dann speichern. Ziemlich einfach, aber ressourcenintensiv? Der Folgecode ist nur mehrere Aufrufe von transferCols(). Ich dachte, das Excel zu lesen und es in einer lokalen 2D Matrix zu speichern, während ich es bearbeite, bevor ich es in Excel schreibe, wäre schneller. – Philong