Je sais que je peux lire une plage de cellules en utilisant ce code:
worksheet.cell(range="A1:J1").value
mais je préfère utiliser des chiffres plutôt que des lettres pour sélectionner des colonnes, quelque chose comme ça:
worksheet.cell(row=1,column=1:10).value
Est-ce possible?
ws.cell()
ne peut renvoyer que des cellules individuelles; les plages correspondantes n'ont donc aucun sens. Pour accéder à une plage de cellules, vous pouvez utiliser ws.iter_rows()
ou ws.rows
ou ws.columns
. Jusqu'à la version 2.3 incluse, ws.iter_rows()
accepte uniquement la notation de plage de style Excel, mais vous pouvez utiliser des décalages de ligne et de colonne pour créer une plage. À partir de la version 2.4, vous serez en mesure de fournir des valeurs entièrement numériques (indexation à base 1) pour min_row
, min_col
, max_row
et max_col
.
Êtes-vous sûr que worksheet.cell(range="A1:J1").value
est possible?
Ce qui précède peut être possible en utilisant la fonction range
comme indiqué dans la documentation officielle:
http://openpyxl.readthedocs.io/en/default/api/openpyxl.worksheet.worksheet.html
Il existe 2 façons d'utiliser worksheet.cell:
Utilisation: cellule (coodinate = ’A15’) ou cellule (rangée = 15, colonne = 1)
Si les coordonnées ne sont pas données, il faut indiquer ligne et colonne.
Donc, vous pouvez utiliser une compréhension de liste:
data = [worksheet.cell(row=1,column=i).value for i in range(1,11)]
Il semble que vous souhaitiez diviser une plage en lignes et stocker les valeurs de cellule de chaque ligne dans un tuple ou une liste. Il existe 2 méthodes qui sont propres et faciles pour cela:
Hypothèses:
ws: feuille de calcul, par exemple ws=wb['Sheet1']
rng: toute plage en ws, par ex. rng=ws['A1':'D10']
ou rng=ws['A1':'D' + str(ws.max_column)]
Méthode 1:
t=Tuple(rng)
cela retournera un tuple contenant les n-uplets de chaque ligne. Donc, dans cet exemple, t aura 10 n-uplets et chaque tuple intérieur aura 4 éléments/valeurs.
Méthode 2:
final_list=[]
for row in rng:
mylist=list(row)
final_list.append(mylist)
ce sera à peu près la même chose sauf que, au lieu de tuples, vous auriez des listes.
REMARQUE:
une liste de listes ou un nuplet de tuples stockera cells
et non leurs valeurs. Pour accéder à leur valeur, procédez comme suit:
first_cell_value=t[0][0].value