ワークブックの読み込み
Excelファイルを開いて読み取ります
「ワークブックの読み込み」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。
Python から Excel を扱う
openpyxl は、最新の Excel ファイル(.xlsx 形式)を読み書きするための標準ライブラリです。通常は手作業で行うスプレッドシート操作を、Python で自動化できます。
このレッスンでは、ファイルを開いて内容を読み取る方法に焦点を当てます。
ワークブックのモデル
Excel ファイルには明確な階層があり、openpyxl もそれを反映しています。
- ワークブック ファイル全体
- ワークシート ファイル内の 1 つのタブ
- セル 値を持つ A1 形式の 1 つのボックス
ワークブックからワークシート、そしてセルへと移動します。
ファイルを開く
load_workbook('data.xlsx') はファイルを読み込み、ワークブックを返します。読み取り専用で大きなファイルを扱う場合は、read_only=True を渡すと行をストリーミングしてメモリを節約できます。
数式のテキストではなく、数式セルの最後に計算された結果を読み取るには、data_only=True を使います。
シートを選択する
wb.active は現在選択されているシートを返します。wb['Sheet1'] は名前で選択し、wb.sheetnames はすべてのタブを一覧表示します。適切なシートを選ぶことが、あらゆる読み取り処理の最初のステップです。
sheetnames = ['Summary', 'Q1', 'Q2', 'Q3']
wanted = 'Q2'
if wanted in sheetnames:
print('Selecting sheet:', wanted)
else:
print('Not found, defaulting to', sheetnames[0])1 つのセルを読み取る
Excel のアドレスを使ってセルにアクセスできます。たとえば ws['A1'].value、または ws.cell(row=1, column=1).value のように行番号と列番号でも指定できます。.value 属性には実際のデータが格納されており、テキスト、数値、日付、または None のいずれかになります。
列の文字と番号
Excel の列は文字(A、B、...、Z、AA)で表されますが、openpyxl では 1 から始まる番号も使います。両者の変換が必要になることもあります。ここでは、文字から列番号を取得します。
def col_to_num(letters):
num = 0
for ch in letters.upper():
num = num * 26 + (ord(ch) - ord('A') + 1)
return num
for c in ['A', 'B', 'Z', 'AA']:
print(c, '->', col_to_num(c))行を反復処理する
ws.iter_rows(values_only=True) は、値のタプルとして各行を返します。これは表を読み取る最もすっきりした方法です。通常、最初の行はヘッダーです。
他の iterable と同じように、行をループ処理できます。
rows = [
('Name', 'Age', 'City'),
('Ada', 36, 'London'),
('Linus', 54, 'Helsinki'),
]
header = rows[0]
for record in rows[1:]:
print(dict(zip(header, record)))使用範囲を見つける
ws.max_row と ws.max_column から、データがどこまで広がっているかがわかります。ws.dimensions は、'A1:C10' のような範囲文字列を返します。これらを使うと、空のセルを読み取らずに済みます。
範囲を読み取る
ワークシートはスライスできます。ws['A1:C3'] は、セルオブジェクトの行タプルを含むタプルを返します。シートのすべての行ではなく、一部だけが必要な場合に便利です。
空のセルを扱う
空のセルは None を返します。実際のスプレッドシートは整然としていないことが多いため、読み取り時には、たとえばデフォルト値に置き換えるなどして、欠損値に対処してください。これにより、後続の処理でのクラッシュを防げます。
raw_row = ('Ada', None, 'London')
clean = [v if v is not None else 'N/A' for v in raw_row]
print(clean)複数のシートをまたいで読み取る
ワークブックでは、たとえば月ごとに 1 つずつタブを用意するなど、データを複数のタブに分けることがあります。wb.sheetnames をループし、各シートを選択して、同じロジックで読み取ります。元のシートを追跡できるように、各行にシート名を付けてください。
このパターンを使うと、多数のタブを 1 つの統合データセットにまとめられます。
クイックチェック
読み取りのスキルを確認しましょう。
まとめ
これで Excel ファイルを読み取れるようになりました。
- 階層は ワークブック > ワークシート > セル
read_onlyとdata_onlyオプションを指定したload_workbookwb.active、wb['Name']、wb.sheetnamesでシートを選択する.value、iter_rows(values_only=True)で読み取り、max_row/max_columnを確認する- 空のセルに対しては
Noneに備える
よくある質問
「ワークブックの読み込み」レッスンは無料ですか?
はい。「ワークブックの読み込み」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。
「ワークブックの読み込み」で何を学びますか?
Excelファイルを開いて読み取ります ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ワークブックの読み込み」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ワークブックの読み込み
- セルの書き込みとスタイル設定
- 数式とグラフ
- レポートのバッチ処理