PythonでExcel操作を始めよう!初心者向にわかりやすく解説

はじめに

ExcelファイルをPythonで操作できるようになると、これまで手作業で何時間もかかっていた業務がわずか数秒で完了するようになります。データの集計、レポート作成、複数ファイルの一括処理など、Excelを使った定型業務は驚くほど効率化できるのです。

この記事では、プログラミング初心者の方でも安心してPythonによるExcel操作を始められるよう、基礎から丁寧に解説していきます。難しい専門用語はできるだけ避け、実務ですぐに使える知識を中心にお伝えします。

なぜPythonでExcelを操作するのか?

手作業との決定的な違い

Excelを手動で操作する場合、同じ作業を何度も繰り返す必要があります。例えば、毎週同じフォーマットのレポートを作成したり、複数の部署から集まったExcelファイルを統合したりする作業は、非常に時間がかかります。

PythonでExcel操作を自動化すると、一度プログラムを書いてしまえば、あとはボタン一つで同じ処理を何度でも実行できます。しかも、人間が手作業で行うよりも正確で、ミスが起こりにくいのです。

こんな場面で威力を発揮

PythonによるExcel操作は、以下のような場面で特に有効です。まず、複数のExcelファイルから特定のデータを抽出して一つにまとめる作業。これは手作業だと非常に面倒ですが、Pythonなら数十ファイルでも一瞬で処理できます。

次に、毎日・毎週のレポート作成業務。同じフォーマットのレポートを定期的に作る必要がある場合、Pythonで自動化すれば朝一番にボタンを押すだけで最新データのレポートが完成します。

また、大量のデータに対する計算や集計作業も得意分野です。Excelの関数では複雑になりすぎる処理も、Pythonなら柔軟に対応できます。

必要な準備:ライブラリの選び方

PythonでExcelを操作するには、専用のライブラリを使用します。ライブラリとは、よく使う機能をまとめたツールセットのようなもので、これを使うことで複雑な処理も簡単に実装できます。

openpyxl:最もポピュラーな選択肢

openpyxlは、PythonでExcelファイルを扱う際の定番ライブラリです。Excel 2010以降の形式(.xlsxファイル)に対応しており、セルの読み書き、書式設定、数式の扱いなど、基本的な操作はすべて可能です。

初心者の方に特におすすめな理由は、使い方がシンプルで直感的だからです。Excelの「A1セル」「B2セル」といった表現がそのまま使えるため、普段Excelを使っている方なら理解しやすい設計になっています。

インストールは非常に簡単で、コマンドプロンプトやターミナルで以下のコマンドを実行するだけです。

pip install openpyxl

pandas:データ分析に強い

pandasは、データ分析に特化したライブラリで、Excelファイルの読み書きにも対応しています。大量のデータを扱う場合や、統計的な処理を行う場合には、openpyxlよりもpandasの方が適しています。

pandasの最大の特徴は、データを「DataFrame」という表形式のオブジェクトで扱える点です。これにより、データの絞り込み、並べ替え、集計などが非常に効率的に行えます。

ただし、pandasは学習コストが少し高めです。まずはopenpyxlで基本を学び、必要に応じてpandasに移行するという学習ルートがおすすめです。

xlwings:Excelとの連携に特化

xlwingsは、PythonとExcelをリアルタイムで連携させることができるライブラリです。Excelを開きながらPythonのコードを実行し、その結果をすぐにExcel上で確認できます。

このライブラリは、既存のExcelマクロをPythonで置き換えたい場合や、Excel上でPythonの機能を使いたい場合に便利です。ただし、Excelがインストールされた環境でないと動作しないため、サーバー上での自動処理には向きません。

Excelファイルの基本操作

ファイルを開いて読み込む

ExcelファイルをPythonで扱う最初のステップは、ファイルを読み込むことです。openpyxlを使う場合、まずファイル全体を「ワークブック」として読み込み、その中から特定の「シート」を選択してデータにアクセスします。

この仕組みは、実際のExcelの構造と同じです。Excelファイルには複数のシートが含まれていて、各シートの中にセルがあります。Pythonでも同じように、ワークブック→シート→セルという階層でアクセスしていきます。

import openpyxl

# Excelファイルを開く
workbook = openpyxl.load_workbook('sample.xlsx')
# シートを選択
sheet = workbook['Sheet1']
# セルの値を取得
value = sheet['A1'].value
print(value)

このコードでは、まずload_workbook関数でExcelファイルを読み込んでいます。次に、シート名を指定してシートを選択し、最後にセルの座標(この場合はA1)を指定して値を取得しています。

データを書き込む

Excelファイルにデータを書き込む処理も、読み込みと同様にシンプルです。セルを指定して値を代入し、最後にファイルを保存するだけです。

重要なポイントは、値を変更しただけではファイルには反映されないという点です。必ずsaveメソッドを呼び出してファイルを保存する必要があります。これを忘れると、せっかく書き込んだデータが消えてしまいます。

# セルに値を書き込む
sheet['B2'] = '新しいデータ'
# ファイルを保存
workbook.save('sample.xlsx')

複数のセルを一度に処理

実務では、一つのセルだけを操作することは少なく、複数のセルを一度に処理することが多くなります。例えば、A列のすべてのデータを読み込んで合計を計算したり、B列に計算結果を一括で書き込んだりします。

openpyxlでは、ループ処理を使って複数のセルに順次アクセスできます。例えば、2行目から10行目までのA列の値を読み込む場合、以下のように記述します。

for row in range(2, 11):
    value = sheet[f'A{row}'].value
    print(value)

この方法なら、何千行あるデータでも効率的に処理できます。

新しいExcelファイルを作成する

既存のファイルを編集するだけでなく、ゼロから新しいExcelファイルを作成することもできます。これは、処理結果を新しいレポートとして出力したい場合に便利です。

新規ファイルの作成はWorkbookクラスのインスタンスを作るだけです。このとき、デフォルトで「Sheet」という名前のシートが一つ作成されます。必要に応じてシート名を変更したり、新しいシートを追加したりできます。

# 新しいワークブックを作成
new_workbook = openpyxl.Workbook()
# アクティブなシートを取得
new_sheet = new_workbook.active
# データを書き込む
new_sheet['A1'] = 'タイトル'
# ファイルを保存
new_workbook.save('new_file.xlsx')

セルの書式設定

データを書き込むだけでなく、セルの見た目を整えることも重要です。フォントの色やサイズ、セルの背景色、罫線などを設定することで、見やすく整理されたExcelファイルを作成できます。

openpyxlでは、フォント、塗りつぶし、罫線などの書式をオブジェクトとして定義し、セルに適用します。少し手順が多く感じるかもしれませんが、一度覚えてしまえば自由にデザインできるようになります。

書式設定で特によく使うのは、ヘッダー行を太字にしたり、特定の条件を満たすセルに色を付けたりする処理です。これらは手作業では時間がかかりますが、Pythonなら一瞬で完了します。

よくある質問と解決方法

Q: 大きなExcelファイルの処理が遅い

数万行以上のデータを含む大きなExcelファイルを処理する場合、openpyxlだと時間がかかることがあります。これは、openpyxlがすべてのセルの情報を詳細に読み込むためです。

この問題を解決するには、read_only=Trueオプションを使って読み込み専用モードでファイルを開くか、pandasライブラリに切り替えることをおすすめします。pandasは大量データの処理に最適化されているため、圧倒的に高速です。

Q: Excelの数式が消えてしまう

openpyxlでセルを編集すると、そのセルに入っていた数式が消えて計算結果の値だけが残ることがあります。これは、数式を保持したまま値を更新する場合に問題になります。

数式を保持したい場合は、セルに直接値を代入するのではなく、数式の文字列を代入します。例えば、SUM関数を使いたい場合はsheet['A10'] = '=SUM(A1:A9)'のように記述します。

Q: 日本語が文字化けする

日本語を含むExcelファイルを扱う際、文字化けが発生することがあります。これは主にファイルパスに日本語が含まれている場合に起こります。

対策としては、ファイルパスを扱う際にPythonのpathlibモジュールを使用するか、ファイルパスに日本語を使わないようにすることが有効です。

実践的な活用例

月次レポートの自動生成

営業部門では、毎月同じフォーマットの売上レポートを作成することが多くあります。Pythonを使えば、データベースから最新のデータを取得し、自動的にExcelレポートを生成できます。

このプロセスでは、まずテンプレートとなるExcelファイルを用意します。そのファイルをPythonで読み込み、必要な箇所にデータを書き込んでいきます。グラフの更新も自動化できるため、完全に手を離した状態でレポートが完成します。

複数ファイルの統合処理

各部署から提出されたExcelファイルを一つにまとめる作業は、手作業だと非常に時間がかかります。Pythonなら、フォルダ内のすべてのExcelファイルを自動的に読み込み、データを統合して新しいファイルに出力できます。

この処理では、osモジュールやglobモジュールを使ってファイル一覧を取得し、ループ処理で各ファイルを順次読み込んでいきます。データの形式が統一されていれば、完全自動化も可能です。

データクレンジング

実務で扱うExcelデータは、空白セルが混ざっていたり、表記揺れがあったりと、そのままでは使えないことが多くあります。Pythonを使えば、こうしたデータのクリーニング作業を自動化できます。

例えば、全角数字を半角に変換したり、余分な空白を削除したり、日付フォーマットを統一したりといった処理を、すべてのセルに対して一括で適用できます。

エラーへの対処法

Pythonでプログラムを書いていると、必ずエラーに遭遇します。しかし、エラーメッセージをよく読めば、ほとんどの問題は解決できます。

FileNotFoundError

これは、指定したファイルが見つからない場合に発生するエラーです。ファイル名のスペルミスや、ファイルパスの間違いが原因であることがほとんどです。ファイルが正しい場所にあるか、パスの指定が正確かを確認しましょう。

KeyError

シート名やセルの座標を間違えて指定した場合に発生します。Excelファイルを実際に開いて、シート名やセルの位置を再確認してください。

AttributeError

メソッドや属性の呼び出し方が間違っている場合に発生します。タイプミスがないか、正しいオブジェクトに対して操作を行っているかを確認しましょう。

学習を進めるためのヒント

まずは小さく始める

最初から複雑なプログラムを作ろうとせず、まずは一つのセルを読み書きする簡単なプログラムから始めましょう。動作を確認しながら少しずつ機能を追加していくことで、確実にスキルが身につきます。

公式ドキュメントを活用する

openpyxlやpandasの公式ドキュメントには、豊富な例とともに詳しい説明が掲載されています。英語が苦手な方でも、コード例を見ればある程度理解できます。わからないことがあったら、まず公式ドキュメントを確認する習慣をつけましょう。

実務の課題を題材にする

自分の仕事で実際に困っていることを題材にすると、学習のモチベーションが維持しやすくなります。「この作業を自動化できないか」という視点で日々の業務を見直してみてください。

まとめ

PythonによるExcel操作は、最初は難しく感じるかもしれませんが、基本を押さえれば誰でもマスターできます。openpyxlというライブラリを使えば、ファイルの読み書き、データの編集、書式設定など、Excelでできることのほとんどをプログラムで自動化できます。

この記事で紹介した基本的な操作を実践しながら、徐々に複雑な処理にチャレンジしていってください。最初は時間がかかるかもしれませんが、一度自動化してしまえば、その後は何度でも再利用できます。

これから業務効率化に取り組む方、データ処理のスキルを身につけたい方は、ぜひPythonでのExcel操作にチャレンジしてみてください。きっと新しい可能性が開けるはずです。

らくらくPython塾 – 読むだけでマスター

■初心者歓迎「AI駆動開発/生成AIエンジニアコース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

格安のプログラミングスクールといえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
対面型でより早くスキル獲得、月額2万円のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<オンライン無料>ゼロから始めるPython爆速講座