この記事では、Pythonで.xlsx形式のExcelファイルを操作するためのライブラリopenpyxlを使い、Excelブックを開いてシートやセルのデータを読み込む基本的な方法について解説します。
1. 準備:openpyxlのインストールとサンプルExcelファイル
openpyxlはサードパーティ製のライブラリなので、使用する前にインストールが必要です。
pip install openpyxl
この記事のコードを試すために、sample.xlsxという名前のExcelファイルを作成し、Sheet1に以下のデータを入力してください。
| A | B | C | |
| 1 | Name | Subject | Score |
| 2 | Taro | Math | 85 |
| 3 | Hanako | English | 92 |
| 4 | Kenji | Science | 78 |
2. Excelブックを開き、シートを取得する
まず、openpyxl.load_workbook()関数でExcelファイル(ワークブックオブジェクト)を開きます。
import openpyxl
# Excelワークブックを読み込む
workbook = openpyxl.load_workbook("sample.xlsx")
print(f"ワークブックの型: {type(workbook)}")
ワークブック内のシートには、以下の方法でアクセスできます。 wb.sheetnames: すべてのシート名をリストとして取得します。(古いget_sheet_names()は非推奨) wb['シート名']: シート名で特定のシートオブジェクトを取得します。(古いget_sheet_by_name()は非推奨) wb.active: 現在アクティブなシートを取得します。
# すべてのシート名を表示
print(f"シート名の一覧: {workbook.sheetnames}")
# 'Sheet1'という名前のシートを取得
sheet = workbook['Sheet1']
print(f"現在のシートのタイトル: {sheet.title}")
3. シートからセルを読み取る
シートオブジェクトから個々のセルにアクセスし、その値を取得するにはいくつかの方法があります。
座標でアクセスする 'A1'のような座標の文字列を使って、直接セルオブジェクトにアクセスできます。セルの値は.value属性で取得します。
cell_a1 = sheet['A1']
print(f"セルA1の値: {cell_a1.value}")
cell_b2 = sheet['B2']
print(f"行 {cell_b2.row}, 列 {cell_b2.column} の値は 「{cell_b2.value}」 です。")
print(f"セル {cell_b2.coordinate} の値は 「{cell_b2.value}」 です。")
cell()メソッドでアクセスする sheet.cell(row=行番号, column=列番号)の形式でもセルを取得できます。行と列の番号は1から始まります。
# 1行目、2列目のセル(B1)の値を取得
cell_b1_value = sheet.cell(row=1, column=2).value
print(f"B1の値: {cell_b1_value}")
# シートの最大行・最大列を取得
print(f"最大行: {sheet.max_row}")
print(f"最大列: {sheet.max_column}")
4. 複数のセル(範囲)を一度に読み取る
シートのスライス機能を使うと、矩形領域のセルを一度に取得できます。
# A1からC3までのセル範囲を取得
cell_range = sheet['A1':'C3']
for row_of_cells in cell_range:
for cell in row_of_cells:
print(f"{cell.coordinate}: {cell.value}", end=" | ")
print()
実行結果:
A1: Name | B1: Subject | C1: Score |
A2: Taro | B2: Math | C2: 85 |
A3: Hanako | B3: English | C3: 92 |
また、sheet.iter_rows()やsheet.iter_cols()を使うと、行ごとや列ごとにセルを効率的に処理できます。
5. ユーティリティ関数(列文字と番号の変換)
openpyxl.utilsモジュールには、列番号(1, 2…)と列文字('A', 'B'…)を相互に変換する便利な関数が含まれています。
from openpyxl.utils import get_column_letter, column_index_from_string
# 番号から文字へ
print(f"1番目の列: {get_column_letter(1)}") # 出力: A
print(f"27番目の列: {get_column_letter(27)}") # 出力: AA
# 文字から番号へ
print(f"列 'B': {column_index_from_string('B')}") # 出力: 2
print(f"列 'AB': {column_index_from_string('AB')}") # 出力: 28
まとめ
openpyxlライブラリは、Excelファイルの読み込みを自動化するための強力なツールです。load_workbookでファイルを開き、wb['シート名']でシートにアクセスし、sheet['A1']やsheet.cell()で個々のセルの値を読み取ることが基本操作となります。これらの機能を組み合わせることで、Excelシート上のデータを効率的に処理することが可能です。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
