Ich arbeite an einem ziemlich großen Programm, das Daten von wieder nimmt, eine ziemlich große Excel-Tabelle. Aus irgendeinem seltsamen Grund dauert es ewig, diese große Excel-Datei zu laden, und ich hoffte, sie irgendwie zu beschleunigen. Ich habe selbst recherchiert und read_only versucht, aber das hat mir nicht erlaubt, irgendwelche Zellen zu lesen (zumindest wie unten gezeigt). Irgendwelche Vorschläge wären sehr willkommen.Speed uppyxl lesen
def LoadSheet(Filename,worksheet_nr):
import time as t
st = t.clock()
wb = xl.load_workbook(str(Filename))#workbook, loading workbook
Sheets = wb.get_sheet_names()#Worksheets, shows all sheets in the workbook loaded
ActiveSheet = wb.get_sheet_by_name(Sheets[worksheet_nr])#Selects the first sheet
print round(t.clock() - st,3), "seconds of loading time."
print "Sheet is loaded and reading..."
return ActiveSheet
def CountRC_nr(ActiveSheet, StartR,StartC):
R = StartR#Selected starting Row number
C = StartC#Selected starting Column number
Val = None #Value in cell (Right now, none is selected, thus zero value)
while (Val != "None"):
Val = str(ActiveSheet.cell(row=R,column=C).value)
R += 1
NumberRows = R - StartR - 1
Val = None
R=StartR
while (Val != "None"):
Val = str(ActiveSheet.cell(row=R,column=C).value)
C += 1
NumberColumns = C - StartC - 1
return NumberRows, NumberColumns
Da einige von Ihnen angeforderte zu sehen, wie ich verwendet read_only, hier den geänderten Code:
def LoadSheet(Filename,worksheet_nr):
import time as t
st = t.clock()
wb = xl.load_workbook(str(Filename), read_only = True)#workbook, loading workbook
Sheets = wb.get_sheet_names()#Worksheets, shows all sheets in the workbook loaded
ActiveSheet = wb.get_sheet_by_name(Sheets[worksheet_nr])#Selects the first sheet
print round(t.clock() - st,3), "seconds of loading time."
print "Sheet is loaded and reading..."
return ActiveSheet
def CountRC_nr(ActiveSheet, StartR,StartC):
R = StartR#Selected starting Row number
C = StartC#Selected starting Column number
Val = None #Value in cell (Right now, none is selected, thus zero value)
while (Val != "None"):
Val = str(ActiveSheet.cell(row=R,column=C).value)
R += 1
NumberRows = R - StartR - 1
Val = None
R=StartR
while (Val != "None"):
Val = str(ActiveSheet.cell(row=R,column=C).value)
C += 1
NumberColumns = C - StartC - 1
return NumberRows, NumberColumns
Es wäre besser, sich auf die Probleme mit schreibgeschütztem Modus zu konzentrieren. Ihr Code scheint auch gegen die openpyx API zu arbeiten. –
Charlie, tut mir leid, ich habe nicht verstanden, was du meinst. Was meinst du gegen openpixl API? Alles funktioniert korrekt und alles, was ich mir wünschte, war, es zu beschleunigen, aber alle Möglichkeiten, die ich versuche zu arbeiten. Wenn Sie es besser wissen, lassen Sie es mich wissen. – user3604362
Bitte geben Sie einen aktuellen Beispielcode im Read-Only-Modus an (verwenden Sie 'ws.cell()' nicht hier). –