Pythonでは、Excelファイルを読み込んだり、データを書き込んだりすることもできます。
例えば、
- ExcelのデータをPythonで読み込む
- 大量のデータを自動で処理する
- Excelファイルを自動で作成する
- 複数のデータをまとめる
- 毎回行っているExcel作業を自動化する
といったことが可能です。
この記事では、Python初心者向けに、Excelファイルを扱う基本的な方法をやさしく解説します。
- PythonでExcelファイルを操作するには?
- openpyxlをインストールする
- openpyxlが使えるか確認する
- Excelファイルを読み込む
- load_workbook()とは?
- Excelのシートを取得する
- セルの値を取得する
- Excelのデータをまとめて読み込む
- forを使ってExcelのデータを処理する
- Excelのデータを計算する
- Excelファイルを新しく作る
- Workbook()とは?
- セルにデータを書き込む
- Excelファイルを保存する
- 既存のExcelファイルにデータを追加する
- PythonでExcelを操作すると何が便利なの?
- CSVとExcelの違い
- PythonでExcelを操作するときの注意点
- まとめ
PythonでExcelファイルを操作するには?
PythonでExcelファイルを操作する方法はいくつかあります。
初心者がまず覚えるなら、**openpyxl(オープンパイエックスエル)**というライブラリがおすすめです。
openpyxlを使うと、Pythonから .xlsx 形式のExcelファイルを操作できます。
例えば、
Python
↓
openpyxl
↓
Excelファイル(.xlsx)
というイメージです。
openpyxlをインストールする
openpyxlはPythonの標準機能ではないため、最初にインストールする必要があります。
コマンドプロンプトやターミナルを開いて、次のコマンドを実行してください。
pip install openpyxl
環境によって pip が使えない場合は、次の方法もあります。
python -m pip install openpyxl
Windowsでは、こちらでインストールできる場合もあります。
py -m pip install openpyxl
openpyxlが使えるか確認する
インストールが終わったら、次のプログラムを実行してみましょう。
import openpyxl
print("openpyxlを利用できます!")
エラーが出ず、
openpyxlを利用できます!
と表示されれば準備完了です。
Excelファイルを読み込む
まずは既存のExcelファイルをPythonで読み込んでみましょう。
例えば、次のような products.xlsx を用意します。
| 商品名 | 価格 | 在庫 |
|---|---|---|
| りんご | 150 | 20 |
| みかん | 120 | 35 |
| バナナ | 180 | 15 |
このExcelファイルをPythonから読み込んでみます。
import openpyxl
book = openpyxl.load_workbook("products.xlsx")
sheet = book.active
print(sheet["A1"].value)
print(sheet["B1"].value)
print(sheet["C1"].value)
実行すると、
商品名
価格
在庫
と表示されます。
load_workbook()とは?
ここでは、
openpyxl.load_workbook("products.xlsx")
という処理を使っています。
load_workbook()は、ExcelファイルをPythonで読み込むための機能です。
book = openpyxl.load_workbook("products.xlsx")
とすると、Excelファイルの内容をPythonから操作できるようになります。
Excelのシートを取得する
Excelファイルには「シート」があります。
例えば、
products.xlsx
├ 商品一覧
├ 売上
└ 在庫
のように複数のシートを作ることができます。
現在のExcelファイルで最初に表示されるシートを取得するには、
sheet = book.active
とします。
セルの値を取得する
Excelのセルは、Pythonから指定できます。
例えば、
A1
B1
C1
A2
B2
C2
といった形です。
A1セルの値を取得する場合は、
print(sheet["A1"].value)
とします。
例えば、
print(sheet["A2"].value)
なら、A2セルに入っている「りんご」が表示されます。
Excelのデータをまとめて読み込む
1つのセルだけではなく、表全体を読み込むこともできます。
import openpyxl
book = openpyxl.load_workbook("products.xlsx")
sheet = book.active
for row in sheet.iter_rows(values_only=True):
print(row)
実行すると、例えば次のように表示されます。
('商品名', '価格', '在庫')
('りんご', 150, 20)
('みかん', 120, 35)
('バナナ', 180, 15)
これでExcelの表を、Pythonで順番に処理できます。
forを使ってExcelのデータを処理する
Excelのデータを読み込んだら、Pythonの for 文を使って処理できます。
例えば、商品名だけを表示してみます。
import openpyxl
book = openpyxl.load_workbook("products.xlsx")
sheet = book.active
for row in sheet.iter_rows(min_row=2, values_only=True):
print(row[0])
実行すると、
りんご
みかん
バナナ
と表示されます。
min_row=2としているのは、1行目が見出しだからです。
Excelのデータを計算する
Pythonを使えば、Excelのデータを計算することもできます。
例えば、商品の価格を合計してみましょう。
import openpyxl
book = openpyxl.load_workbook("products.xlsx")
sheet = book.active
total = 0
for row in sheet.iter_rows(min_row=2, values_only=True):
total += row[1]
print("価格の合計:", total)
実行すると、
価格の合計: 450
と表示されます。
ExcelのデータをPythonで読み込み、計算処理を行っているわけです。
Excelファイルを新しく作る
今度はPythonからExcelファイルを作ってみましょう。
import openpyxl
book = openpyxl.Workbook()
sheet = book.active
sheet["A1"] = "商品名"
sheet["B1"] = "価格"
sheet["C1"] = "在庫"
sheet["A2"] = "りんご"
sheet["B2"] = 150
sheet["C2"] = 20
sheet["A3"] = "みかん"
sheet["B3"] = 120
sheet["C3"] = 35
book.save("new_products.xlsx")
print("Excelファイルを作成しました!")
実行すると、
new_products.xlsx
というExcelファイルが作成されます。
Excelで開くと、次のような表になっています。
| 商品名 | 価格 | 在庫 |
|---|---|---|
| りんご | 150 | 20 |
| みかん | 120 | 35 |
Workbook()とは?
新しいExcelファイルを作る場合は、
book = openpyxl.Workbook()
とします。
これは新しいExcelブックを作成する処理です。
その後、
sheet = book.active
として、最初のシートを取得します。
セルにデータを書き込む
セルにデータを書き込む場合は、
sheet["A1"] = "商品名"
のようにします。
例えば、
sheet["A1"] = "Python"
sheet["B1"] = "Excel"
とすれば、
| A | B |
|---|---|
| Python | Excel |
というデータを作れます。
Excelファイルを保存する
作成したExcelファイルを保存するには、
book.save("new_products.xlsx")
を使います。
これによって、
new_products.xlsx
というファイルが作成されます。
既存のExcelファイルにデータを追加する
Pythonを使って、Excelファイルに新しいデータを追加することもできます。
import openpyxl
data = [
["なし", 200, 10],
["ブドウ", 220, 5],
["もも", 280, 13]
]
book = openpyxl.load_workbook("products.xlsx")
sheet = book.active
for row in data:
sheet.append(row)
book.save("products.xlsx")
print("Excelファイルにデータを追加しました!")
append()を使うことで、リストのデータを1行ずつ追加できます。
元のファイル👇

データ追加後👇

PythonでExcelを操作すると何が便利なの?
ExcelをPythonで操作する大きなメリットは、繰り返し作業を自動化できることです。
例えば、
- 毎日の売上データを集計する
- 大量のExcelデータを処理する
- 複数のExcelファイルをまとめる
- 商品一覧を自動作成する
- Excelのデータから集計表を作る
- CSVのデータをExcelに変換する
- 定期的に同じ形式のExcelファイルを作る
といった作業を自動化できます。
人間がExcelを開いて、
コピー
↓
貼り付け
↓
計算
↓
保存
と繰り返していた作業を、Pythonに任せられるわけです。
CSVとExcelの違い
前回の記事では、PythonでCSVファイルを扱う方法を紹介しました。
CSVとExcelは似ていますが、特徴が少し違います。
| CSV | Excel | |
|---|---|---|
| ファイル形式 | .csv | .xlsx |
| 表データ | ○ | ○ |
| 複数シート | × | ○ |
| セルの書式 | 基本なし | ○ |
| 計算式 | 基本なし | ○ |
| Pythonで操作 | ○ | ○ |
| openpyxl | 不要 | 必要 |
単純な表データを扱うだけならCSVが便利です。
一方、複数のシートやExcel特有の機能を使いたい場合は、openpyxlが便利です。
PythonでExcelを操作するときの注意点
ExcelファイルをPythonで操作するときは、元ファイルを直接変更する前にバックアップを取っておくことをおすすめします。
特に、
book.save("products.xlsx")
のように元ファイルと同じ名前で保存すると、元のファイルを上書きする可能性があります。
最初のうちは、
元ファイル
products.xlsx
↓
処理後
products_new.xlsx
のように、別のファイルとして保存すると安心です。
まとめ
今回は、PythonでExcelファイルを操作する基本を紹介しました。
覚えておきたいポイントは次のとおりです。
- Excelを操作するなら
openpyxlが便利 pip install openpyxlでインストールできるload_workbook()でExcelを読み込めるsheet["A1"].valueでセルの値を取得できるWorkbook()で新しいExcelファイルを作れるsheet["A1"] = ...でセルにデータを書き込めるsave()でExcelファイルを保存できるforを使えば大量のデータをまとめて処理できる- Pythonを使えばExcel作業を自動化できる
CSVに続いてExcelも扱えるようになると、Pythonでできるデータ処理の幅がかなり広がります。
