Pythonのライブラリであるopenpyxl
を用いてExcelのセル範囲を操作する方法について解説します。
openpyxlとは
openpyxl
はPythonでExcelファイルを読み書きするためのライブラリです。Excelのデータをプログラムで処理する際に、データが入力されているセルの範囲が必要になることがよくあります。
セル範囲の取得
openpyxl
では、データの範囲をシートのmin_column
, min_row
, max_column
, max_row
で取得することができます。それぞれ以下のようにデータが入力されているセル範囲の「列(column)と行(row)の位置」を1から始まる番号で取得できます。
# xlrange_print.py
import openpyxl
wb = openpyxl.load_workbook("company_members_range_test.xlsx")
ws = wb.worksheets[0]
fmt = "{:7d} {:7d} {:7d} {:7d}"
print("min_col min_row max_col max_row")
print(fmt.format(ws.min_column, ws.min_row, ws.max_column, ws.max_row))
セル範囲の読み取り
特定のセル範囲のデータを読み取るには、範囲の「左上と右下のセル番号」を指定します。例えば、以下のように「C2:H12の範囲」を1行ずつ読み取るには、シートの変数がws
ならばws["C2:H12"]
をfor
文でループすれば簡単に処理できます。
# xlrange-iter.py
import openpyxl
wb = openpyxl.load_workbook("company_members_range_test.xlsx")
ws = wb.worksheets[0]
for row in ws["C2:H12"]:
values = []
for col in row:
values.append(col.value)
print(values)
注意点
データが入力されていない範囲でも中央揃えのような単純な書式設定があるだけでデータ範囲として認識されてしまいます。また、スペースの入力だけでもデータ範囲と見なされます。そのため、データ専用として書式設定していないエクセルファイルならば問題ありませんが、帳票のように書式設定で体裁を整えているファイルでは、余分な部分までデータ範囲として処理してしまうことがあるので、コードで何らかの工夫が必要です。
以上、Pythonとopenpyxlを用いたExcelのセル範囲操作について解説しました。この知識を活用して、PythonでExcelデータを効率的に操作してみてください。