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 № 1La 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