/ / Openpyxl: legge i dati del foglio di calcolo in un intervallo di colonne: python, python-3.x, openpyxl

Openpyxl: leggi i dati del foglio di calcolo in un intervallo di colonne: python, python-3.x, openpyxl

Ciao sto cercando di leggere i dati da un foglio di calcoloin un intervallo che include le righe da 2 a 5 e segue l'ordine delle colonne ma continuo a ricevere errori nel dire che c'è qualcosa che non va nel range di colonne qualcuno può aiutarmi? Il codice dovrebbe apparire come questo ma invece di righe dovrebbe essere colonne:

for row in range(2, sheet.max_row + 1):
state  = sheet["B" + str(row)].value
county = sheet["C" + str(row)].value
pop    = sheet["D" + str(row)].value

il codice che ho tentato è:

import openpyxl
wb = openpyxl.load_workbook("name of wb")
sheet = wb.get_sheet_by_name("Sheet1")
for col in range("G", sheet.max_column + 1):
state  = sheet[1 + str(column)].value
county = sheet[2 + str(column)].value
pop    = sheet[3 + str(column)].value
hospitals  = sheet[4 + str(column)].value
universities = sheet[5 + str(column)].value

risposte:

0 per risposta № 1

La mia ipotesi è che il codice "sheet.max_row + 1" sia il colpevole. Ciò andrebbe FUORI dall'intervallo indicizzabile della lista dei fogli.


0 per risposta № 2

Il problema per quanto posso vedere è in "range (" G ", sheet.max_column + 1)". Gli argomenti per l'intervallo di solito dovrebbero essere numeri interi. Scopri un paio di metodi nel modulo utilp di openpyxl:

column_index_from_string (str_col), get_column_letter (IDX,)

per il tuo esempio, column_index_from_string ("G") restituisce 7. Dovresti anche convertire i riferimenti di cella nello stile excel, ad es. A1 non 1A.

import openpyxl
wb = openpyxl.load_workbook("name of wb")
sheet = wb.get_sheet_by_name("Sheet1")
for col in range(openpyxl.utils.column_index_from_string("G"), sheet.max_column + 1):
state  = sheet[openpyxl.utils.get_column_letter(col) + "1"].value
county = sheet[openpyxl.utils.get_column_letter(col) + "2"].value
pop    = sheet[openpyxl.utils.get_column_letter(col) + "3"].value
hospitals  = sheet[openpyxl.utils.get_column_letter(col) + "4"].value
universities = sheet[openpyxl.utils.get_column_letter(col) + "5"].value