2017-11-17 11 views
0

こんにちは、行2〜5を含む範囲のスプレッドシートからデータを読み取ろうとしていますが、列の順序に従いますが、列の範囲誰も私を助けることができますか? コードは次のようになりますが、代わりに、行のそれが列でなければなりません:私が試みたOpenpyxl:列の範囲内のスプレッドシートデータを読み取る

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 

コードは次のとおりです。

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

あなたが試みたコードを投稿できますか?また、スプレッドシートの例も役に立ちます。 – mjwatts

+0

問題の説明にコードをアップロードしました –

答えて

0

私の推測では、あなたのコードその「sheet.max_row + 1」であります犯人です。それはあなたのシートリストのインデックス可能な範囲の外側に行きます。

+0

問題の説明にコードをアップロードしました –

+1

コードをアップロードしましたが、元の質問には次のように書かれています: "コードは行の代わりに列 " 列の代わりに行を使用しようとしていますか? – HSchmachty

0

「range( 'G'、sheet.max_column + 1)」の問題があります。 rangeの引数は通常整数でなければなりません。 はopenpyxl utilsのモジュールでメソッドのカップルをチェックアウト:

column_index_from_string(str_col)、 get_column_letter(IDX)

ご例えば、( 'G')が7を与えるあなたはまた、あなたを有効にしてくださいcolumn_index_from_stringセル参照はExcelスタイルに変換されます。 A1は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 
関連する問題