【Python】Excelファイルをのセルを1行ずつ読み書きする

このエントリーをはてなブックマークに追加
python
PythonVBA/マイクロソフトオフィス系

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)

コメント

タイトルとURLをコピーしました