Excelファイルを1行ずつ読み込む
Excelファイルを1行ずつ読み込むにはfor文が使える
for row in ws.iter_rows(min_row=行番号, min_col=列番号): 処理
openpyxlのiter_rows()とfor文を組み合わせると、「1行分のセル」をループで取得できる
ex)
import openpyxl #4行目のデータから読み込む wb = openpyxl.load_workbook("売上データ.xlsx") ws = wb["4月売上"] for row in ws.iter_rows(min_row=4): print(row)
result
vs.iter_rows()の括弧の中に何も入れないと、「行番号=1、列番号=1(A1)」を起点として順次取得を始めるが、min_row=とmin_col=で開始すると行と列の番号を指定することもできる。
◆タプル…タプルは、リストと同様に二数のデータを格納できるが、あとから要素を追加したり変更したりすることができない。つまり読み取り専用に使われる
(Point)
★1行分のセルはタプルで取得される
★1つのセルの値を1つずつ取得するには、for文が使える
★セルの値は「.value」で取得できる
見やすいように、1行ごとにセルの値が表示されるようにする
import openpyxl wb = openpyxl.load_workbook("売上データ.xlsx") ws = wb["4月売上"] for row in ws.iter_rows(min_row=4): # からのリストを作成 value_list = [] for c in row: value_list.append(c.value) print(value_list)
result
◆iter_rows()はデータが入力されている最終行を自動的に認識して、そこまで1行ずつ列挙してくれる
※しかし、以前データが入力されている最終行を自動的に認識して、そこまで1行ずつ列挙されると、「None」だけの行が表示されることがある
1列目がNoneの場合はbreakで中断させて、表示されないようにする
import openpyxl wb = openpyxl.load_workbook("売上データ.xlsx") ws = wb["4月売上"] for row in ws.iter_rows(min_row=4): # 1列目のセルの価がNoneかどうかを判定し、Noneだったらループを中断 if row[0].value is None: break # 空のリストを作成 value_list = [] for c in row: value_list.append(c.value) print(value_list)
コメント