このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【Python】Excel読み込み方法(openpyxl)

2023年6月10日

今回はPythonでExcelを読み込む方法について解説します。

Excel読み込むためのライブラリはいくつかあるのですが、使い勝手の良いopenpyxlでのやり方を紹介します。

この記事では↓の内容が分かります。

  • openpyxlのインストール方法
  • Excel読み込み方法
  • セルの値を読み込む方法
  • セルに値を書き込む方法

openpyxlのインストール方法

まずはopenpyxlをインストールします。

ターミナルやコマンドプロンプトで、↓のコマンドを実行すればインストールできます。

pip install openpyxl

Excel読み込み方法(openpyxl)

import openpyxl
from openpyxl import load_workbook 

# Excelファイルを開く
wb = load_workbook(r'ファイルのパス/ファイル名.xlsx')

# シートを選択
ws = wb['シート名']

openpyxlでExcelファイルを読み込むには、サンプルコードのように記載します。

load_workbookメソッドでExcelファイルを開き、シート名でシートオブジェクトを取得します。

ファイルのパスは基本的にr文字列で指定しましょう。エスケープの関係でエラーになりやすいです。(詳細は下記をご覧ください)

ws = wb.worksheets[0] # 0は最初のシート

シートはシート名だけでなく、インデックス番号で指定することもできます。

これでExcelファイルのシートの読み込みまで完了です。

ここからは以下のセル操作について説明します。

  • セルの値を読み込む方法
  • セルに値を書き込む方法

セルの値を読み込む方法

import openpyxl
from openpyxl import load_workbook 

# Excelファイルを開く
wb = load_workbook('ファイルのパス/ファイル名.xlsx')

# シートを選択
ws = wb['シート名']

# セルの値を読み込む
cell_value = ws.cell(row = 1, column = 1).value
print(cell_value) # A1セルの値

セルの値を読み込むにはws.cellでセルオブジェクトを取得した後、valueを使います。

サンプルコードではA1セルの値を読み込んでいます。

# セルの値を取得
cell_value = ws['A1'].value
print(cell_value) # A1セルの値

このように文字列でセルオブジェクトを取得することもできます。

行単位で値を読み込む方法

import openpyxl
from openpyxl import load_workbook 

# Excelファイルを開く
wb = load_workbook('ファイルのパス/ファイル名.xlsx')

# シートを選択
ws = wb['シート名']

# values_only=Trueとするとcell型でなく、値型になる
for row in ws.iter_rows(values_only=True):
    print(row) # 行データがタプルで得られる

行単位で値を読み込むにはiter_rowsメソッドを使います。

このメソッドを使うと、行を1行ずつ処理することができます。

値を読み込みたい場合はこのメソッドの引数values_only=Trueを設定します。
(この引数を設定しないとセル型のタプルでデータが返されるので、処理するのに一手間必要です)

for文で1行ずつ読み込むと、1行分のデータがタプル形式で得られます。

この方法で1行ずつデータを読み込んでいきましょう。

セルに値を書き込む方法

import openpyxl
from openpyxl import load_workbook 

# Excelファイルを開く
wb = load_workbook('ファイルのパス/ファイル名.xlsx')

# シートを選択
ws = wb['シート名']

# セルに値を書き込む
ws.cell(row = 1, column = 1, value = 'A1') 

# Excelファイルを保存
wb.save(r'ファイルのパス/ファイル名.xlsx')

セルに値を書き込む場合は、ws.cellのvalue引数に値を設定します。

サンプルコードではA1セルに’A1’を書き込んでいます。

Excelファイルを編集するには最後にファイル保存が必要になります。

wb.saveメソッドを使うのですが、開いたときと同じファイルパスを指定すると上書き保存されます。

行単位で値を書き込む方法

import openpyxl
from openpyxl import load_workbook 

# Excelファイルを開く
wb = load_workbook('ファイルのパス/ファイル名.xlsx')

# シートを選択
ws = wb['シート名']

# 追加する行のリスト
row_values = ['A1', 'A2', 'A3']

# 行を追加する
ws.append(row_values)

# Excelファイルを保存
wb.save(r'ファイルのパス/ファイル名.xlsx')

セル単位でなく、行単位で値を書き込むにはappendメソッドを使います。

appendメソッドの引数にlistを渡すと、シートの末尾にlistの中身が追加されます。

Python

Posted by やろまい