2017-11-17 5 views
0

Hallo Ich versuche, Daten aus einer Kalkulationstabelle in einem Bereich zu lesen, der Zeile 2 bis 5 enthält, und es folgt die Spaltenreihenfolge, aber ich bekomme Fehler, der besagt, dass etwas nicht stimmt Spaltenbereich kann mir jemand helfen? Der Code sollte so aussehen, sondern die Zeilen soll es Spalten sein:Openpyxl: Tabellenkalkulationsdaten in einer Reihe von Spalten lesen

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 

der Code, den ich versucht habe, ist:

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 
+0

Sie können den von Ihnen versuchten Code posten, und ein Beispiel für die Tabelle könnte auch hilfreich sein. – mjwatts

+0

Ich habe den Code in der Beschreibung des Problems hochgeladen –

Antwort

0

Meine Vermutung ist, dass der Code „sheet.max_row + 1“ ist der Schuldige. Das würde AUSSERHALB des indizierbaren Bereichs Ihrer Blattliste gehen.

+0

Ich habe den Code in der Beschreibung des Problems –

+1

hochgeladen Sie haben den Code hochgeladen, aber Ihre ursprüngliche Frage lautet: "Der Code sollte so aussehen, aber anstelle von Zeilen sollte es sein Spalten " Wo ist Ihr Versuch, Zeilen statt Spalten zu verwenden? – HSchmachty

0

Das Problem, soweit ich sehen kann, ist in "Bereich ('G', sheet.max_column + 1)". Argumente für den Bereich sollten normalerweise ganze Zahlen sein. Check out Modul ein paar Methoden in der openpyxl utils:

column_index_from_string (str_col), get_column_letter (idx,)

für Ihr Beispiel column_index_from_string ('G') gibt 7. Sie sollten auch schalten Sie Zellreferenzen in Excel-Stil z A1 nicht 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 
Verwandte Themen