2010-07-02 5 views

Répondre

4

Je ne suis pas sûr de ce que vous êtes en train de lire; L'accès xlrd aux plages nommées est disponible depuis quelques années (dans la version 0.6.0, la dernière version est la 0.7.1) et est livré avec une documentation complète ab initio.

This is the xlrd documentation link est donné sur la page http://www.python-excel.org/ que vous avez mentionnée. Hit PageDown deux fois et vous devriez voir une section intitulée Références nommées, constantes, formules et macros. Cela donne une vue d'ensemble et vous dirige vers la documentation des méthodes & l'objet Name, et vers un script de démonstration. Notez qu'il s'agit de la version de ligne de réseau SVN de la documentation et qu'elle s'applique à une version ultérieure; il peut mentionner une méthode de commodité supplémentaire qui n'est pas disponible dans la version actuelle de xlrd (que vous pouvez obtenir de PyPI) et qui inclut le fichier de documentation approprié.

Mise à jour en réponse à "" "je me suis loin: someRange = book.name_map [u'somerange '] [0] et maintenant je veux itérer dessus, les valeurs d'appui, obtenir ses dimensions, etc. Maintenant, que dois-je faire? J'ai essayé dir (someRange) et help (someRange) et cela n'a pas aidé beaucoup. "" "

Ce que vous appelez someRange est une instance de la classe Name. Vous devez lire le documentation of that class. Il serait utile si vous deviez lire the demonstration script xlrdnameAPIdemo.py et essayez de l'exécuter sur votre fichier (s) xls. Notez que "get its dimensions" précède logiquement "itérer dessus, saisir des valeurs"; la méthode pratique Name.area2d peut être ce dont vous avez besoin.

+0

Ok John, donc je suis arrivé jusqu'ici: 'someRange = book.name_map [u'somerange '] [0]' et maintenant je veux itérer dessus, saisir des valeurs, obtenir ses dimensions, etc. faire? J'ai essayé 'dir (someRange)' et 'help (someRange)' et cela n'a pas beaucoup aidé. Merci. –

1

Ce n'est pas trivial et cela a fonctionné dans mon cas seulement sur XLS pas XLSX (probablement parce que sur mon 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. 

Vous voulez limiter le nombre de colonnes et de lignes dans la feuille au cas où votre plage est similaire à A:A ou 1:1 (c'est-à-dire la ligne ou la colonne entière).

Questions connexes