Come individuare e accedere a intervalli denominati (globale, rta-foglio di lavoro) utilizzando XLRD, Python?

StackOverflow https://stackoverflow.com/questions/3163073

Domanda

La documentazione per xlrd qui http://www.python-excel.org/ afferma che è ora possibile in ultima versione, ma non dice come.

È stato utile?

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).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top