PythonでExcelファイルを操作する方法|初心者向けに読み込み・書き込みを解説

Pythonでは、Excelファイルを読み込んだり、データを書き込んだりすることもできます。

例えば、

  • ExcelのデータをPythonで読み込む
  • 大量のデータを自動で処理する
  • Excelファイルを自動で作成する
  • 複数のデータをまとめる
  • 毎回行っている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 を用意します。

商品名価格在庫
りんご15020
みかん12035
バナナ18015

この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で開くと、次のような表になっています。

商品名価格在庫
りんご15020
みかん12035

Workbook()とは?

新しいExcelファイルを作る場合は、

book = openpyxl.Workbook()

とします。

これは新しいExcelブックを作成する処理です。

その後、

sheet = book.active

として、最初のシートを取得します。


セルにデータを書き込む

セルにデータを書き込む場合は、

sheet["A1"] = "商品名"

のようにします。

例えば、

sheet["A1"] = "Python"
sheet["B1"] = "Excel"

とすれば、

AB
PythonExcel

というデータを作れます。


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は似ていますが、特徴が少し違います。

CSVExcel
ファイル形式.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でできるデータ処理の幅がかなり広がります。

関連記事
・WindowsにPythonをインストールする方法【初心者向け】
・PythonでExcelのデータを自動集計する方法|openpyxlで売上データを集計
タイトルとURLをコピーしました