Come individuare e accedere a intervalli denominati (globale, rta-foglio di lavoro) utilizzando XLRD, Python?
-
02-10-2019 - |
Domanda
La documentazione per xlrd
qui
http://www.python-excel.org/
afferma che è ora possibile in ultima versione, ma non dice come.
Soluzione
Non sono sicuro di quello che in realtà si sta leggendo; accesso XLRD a intervalli denominati è stato disponibile per qualche anno (nella versione 0.6.0, ultima versione è 0.7.1). ed è venuto con la documentazione completa ab initio
questo è il link di documentazione XLRD che viene dato sul http://www.python-excel.org/ pagina che lei ha citato . Hit PageDown due volte e si dovrebbe vedere una sezione intitolata con nome riferimenti, costanti, formule e macro . Questo dà una visione d'insieme e si punti alla documentazione dei metodi Book.name_*
e l'oggetto Name
, e ad uno script dimostrazione.
Si noti che questa è la versione tronco SVN della documentazione e si applica a un rilascio futuro; si può parlare di un metodo comodità che non è disponibile nella versione corrente rilasciata di XLRD (che si può ottenere da PyPI ) e che include il file di documentazione.
Aggiorna in risposta a "" "Ho avuto fino a questo punto: someRange = book.name_map [u'somerange '] [0] e ora voglio scorrere su di esso, i valori afferrare, ottiene la sua dimensioni, ecc Ora cosa faccio? ho provato dir (someRange) e di aiuto (someRange) e non ha aiutato molto. "" "
Quello che si sta chiamando someRange
è un'istanza della classe Name
. Hai bisogno di leggere il documentazione di quella classe . Sarebbe d'aiuto se si dovesse leggere la dimostrazione sceneggiatura xlrdnameAPIdemo .py e provare ad eseguire sopra il file xls (s). Nota che "ottenere le sue dimensioni" logicamente precede "scorrere su di esso, i valori afferrare"; il metodo di convenienza Name.area2d
può essere quello che ti serve.
Altri suggerimenti
Non è banale e ha funzionato nel mio caso solo su XLS senza XLSX (probabilmente perché sul mio name.evaluated == 0
XLSX):
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.
Si vuole limitare il numero di colonne e righe nel foglio nel caso in cui la vostra gamma è come A:A
o 1:1
(vale a dire, l'intera riga o colonna).