openpyxlでExcelを操作する

概要

Python を使って Excel ファイルを操作する場合、openpyxl というライブラリを使うことができます。openpyxl は、Python から Excel ファイルの読み書きを行うためのライブラリで、Excel ファイルを Python のデータ構造に変換することができます。今回は、openpyxl の基本的な使い方について説明します。

version 確認

python: v3.11.2
openpxl: v3.1.1

openpyxl のインストール

まずは、openpyxl をインストールします。以下のコマンドを実行してください。

pip install openpyxl

ソースコード全体

from openpyxl import load_workbook

# Excelファイルの読み込み
wb = load_workbook('input.xlsx')

# シートの取得
ws = wb.worksheets[0]

# セルの取得
cell = ws.cell(row=1, column=1)

# セルに値を設定
cell.value = 'Hello, world!'

# Excelファイルの保存
wb.save('output.xlsx')

Excel ファイルの読み込み

Excel ファイルを読み込むには、openpyxl の load_workbook()メソッドを使います。以下のようにコードを書きます。

from openpyxl import load_workbook

# Excelファイルの読み込み
wb = load_workbook('input.xlsx')

load_workbook()メソッドには、Excel ファイルのパスを指定します。

シートの取得

Excel ファイルには複数のシートが含まれることがあります。シートを取得するには、wb オブジェクトから worksheets 属性を使います。以下のようにコードを書きます。

# シートの取得
ws = wb.worksheets[0]

worksheets 属性は、シートのリストを返します。上記のコードでは、リストの先頭のシートを取得しています。

セルの操作

# セルの取得
cell = ws.cell(row=1, column=1)

# セルに値を設定
cell.value = 'Hello, world!'

cell()メソッドには、行番号と列番号を指定します。上記のコードでは、1 行目 1 列目のセルを取得しています。また、取得したセルに値を設定するには、value 属性に代入します。

Excel ファイルの保存

Excel ファイルを保存するには、wb オブジェクトから save()メソッドを使います。以下のようにコードを書きます。

# Excelファイルの保存
wb.save('output.xlsx')

save()メソッドには、保存するファイル名を指定します。 以上が、openpyxl を使った Excel ファイルの操作の基本的な流れです。これらの操作を組み合わせて、様々な処理を実現することができます。

管理しやすいプロジェクト構成(おまけ)

Excel ファイルについて上の方法でうまくいきますが、他プロジェクトメンバーに共有するときは不便です。 ですので npm scripts を記述して、より簡潔にします。 またグローバルの pip を汚したくないのでカレントディレクトリにインストールして使用します。

  • 補足 npm scripts を使用するためには、node.js をインストールしてください

バージョン管理のために requipments を作成する

// requipments.txt
openpyxl >= 3.1.1
// package.json
{
  "name": "openpyxl",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "install": "pip install -r requirements.txt -t site-packages",
    "start": "python main.py"
  },
  "author": "",
  "license": "ISC"
}

以下ファイルを作成したら、npm scripts を使用して pyinstaller をインストールします。

npm run install

インストールが完了したら、カレントディレクトリの site-packages を読み込むように修正します。

import os, sys
sys.path.append(os.path.join(os.path.dirname(__file__), 'site-packages'))
from openpyxl import load_workbook

# Excelファイルの読み込み
wb = load_workbook('input.xlsx')

# シートの取得
ws = wb.worksheets[0]

# セルの取得
cell = ws.cell(row=1, column=1)

# セルに値を設定
cell.value = 'Hello, world!'

# Excelファイルの保存
wb.save('output.xlsx')

ソースの修正が完了したら、npm scripts を使用して、python を起動します。

npm run start

プロジェクトについては以下に挙げておくので参照してみてください https://github.com/wiblok/python/tree/main/openpyxl