Wie zu finden und Zugang benannte Bereiche (global, nd pro-Arbeitsblatt) mit xlrd, Python?
-
02-10-2019 - |
Frage
Die Dokumentation für xlrd
hier
http://www.python-excel.org/
erwähnt, dass es nun möglich, in neuester Version ist, aber nicht sagen, wie.
Lösung
Ich bin sicher nicht das, was Sie lesen tatsächlich; xlrd Zugriff auf benannte Bereiche hat nun schon seit einigen Jahren zur Verfügung (in der Version 0.6.0, aktuelle Version ist 0.7.1). und kam mit vollständiger Dokumentation ab initio
Dies ist die xlrd Dokumentation Link , die auf dem http://www.python-excel.org/ Seite gegeben hat, dass Sie erwähnt . Hit BildAb zweimal, und Sie sollten einen Abschnitt mit der Überschrift Named Referenzen, Konstanten, Formeln sehen, und Makros . Dies gibt einen Überblick und Punkte, die Sie in der Dokumentation der Book.name_*
Methoden & das Name
Objekts und zu einer Demonstration Skript.
Beachten Sie, dass dies die Stamm-Version der Dokumentation SVN und gilt für eine zukünftige Version; es kann eine zusätzliche bequeme Methode erwähnen, die in der aktuellen freigegebenen Version von xlrd nicht verfügbar ist (die Sie von PyPI bekommen ) und das beinhaltet die relevante Dokumentationsdatei.
Aktualisieren in Reaktion auf "" "Ich habe so weit: someRange = book.name_map [u'somerange '] [0] und jetzt habe ich über sie iterieren wollen, greifen Werte, erhalten ihre Abmessungen usw. Nun, was soll ich tun? ich habe versucht, dir (someRange) und Hilfe (someRange) und es nicht viel geholfen hat. „“ "
Was Sie someRange
fordern ist eine Instanz der Klasse Name
. Sie müssen die Dokumentation lesen dieser Klasse . Es würde helfen, wenn Sie die Demonstration Skript xlrdnameAPIdemo lesen sind Py und versuchen sie es über Ihre xls-Datei (en) ausgeführt wird. Beachten Sie, dass „seine Dimensionen bekommen“ vorangestellt logisch „Iterierte darüber, Haltewert“; die bequeme Methode Name.area2d
kann sein, was Sie brauchen.
Andere Tipps
Es ist nicht trivial und es funktionierte in meinem Fall nur auf XLS keine XLSX (wahrscheinlich, weil auf meinem XLSX name.evaluated == 0
):
name = book.name_map['my_named_range'][0]
assert name.result.kind == xlrd.oREF
ref3d = name.result.value[0]
for sheet_index in range(ref3d.shtxlo, ref3d.shtxhi):
sheet = book.sheet_by_index(sheet_index)
for row in range(ref3d.rowxlo, min(ref3d.rowxhi, sheet.nrows)):
for col in range(ref3d.colxlo, min(ref3d.colxhi, sheet.ncols)):
cell = sheet.cell(row, col)
# TODO: Do something with that cell.
Sie möchten die Anzahl der Spalten und Zeilen in dem Blatt, falls beschränken Sie Ihre Reichweite wie A:A
oder 1:1
(das heißt, die gesamte Zeile oder Spalte).