PCの単純作業を自動化(Excel編)

未分類

この記事でできるようになること

この記事では、Python初心者でも「Excel操作の自動化」ができるようにライブラリ OpenPyXL(オープンパイエクセル) の使い方をインストールから実践コード、よく使う関数一覧まで 一つひとつ丁寧に解説します。

Excel操作の自動化といえば以前からVBA(Visual Basic for Application)が利用されてきましたが、これからも使えるとはいえすでに開発を止めていることとプログラミング言語としてもかなり古くほかのプログラミングに使えないといったデメリットもあるためこれからプログラミングを始めるのであればPythonをお勧めします。

*Pythonの環境構築がまだの方はこちらから。

OpenPyXLとは?

OpenPyXL は、PythonでExcelファイル(.xlsx)を読み書き・編集・作成 できるライブラリです。たとえばこんなことができます。

  • Excelファイルの自動作成
  • データの書き込み・読み込み
  • 既存のExcelの編集
  • 罫線やフォントの設定
  • グラフや数式の追加

Excelを毎日手作業で更新している人にとって、OpenPyXLは最強の時短ツール になります!

OpenPyXLのインストール

PowerShellまたはコマンドプロンプトから以下を実行してOpenPyXLをインストールします。

pip install openpyxl

基本的な使い方

Excelファイルの作成

from openpyxl import Workbook

# 新しいExcelファイルを作成
wb = Workbook()

# アクティブなシートを取得
ws = wb.active

# シート名を変更
ws.title = "売上データ"

# セルに書き込み
ws["A1"] = "商品名"
ws["B1"] = "数量"
ws["C1"] = "金額"

# ファイルを保存
wb.save("sample.xlsx")

実行するとカレントディレクトリ(現在のフォルダ・ディレクトリ)にsample.xlsxが作成されます。

既存のExcelを開いて編集

from openpyxl import load_workbook

# 既存のファイルを開く
wb = load_workbook("sample.xlsx")
ws = wb["売上データ"]

# データを書き込み
ws["A2"] = "りんご"
ws["B2"] = 5
ws["C2"] = 300

# 保存
wb.save("sample.xlsx")

ループで複数行を書き込む

複数のデータを一気に書き込むこともできます。

data = [
    ["商品名", "数量", "金額"],
    ["スピンドル", 5, 3000],
    ["ベースプレート", 2, 12000],
    ["ボルト", 16, 40]
]

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

for row in data:
    ws.append(row)

wb.save("parts.xlsx")

ws.append() を使うと、リストの中身をそのまま行として追加できます。

Excelファイルからデータ読み取り

Excelの中身をPythonで取得することもできます。

from openpyxl import load_workbook

wb = load_workbook("parts.xlsx")
ws = wb.active

# A列の値をすべて取得
for cell in ws["A"]:
    print(cell.value)

範囲を指定して取り出すには

for row in ws["A1:C4"]:
    for cell in row:
        print(cell.value, end="\t")
    print()

数式を入れる

Excelの「=SUM()」のような数式もそのまま使えます。

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

ws["A1"], ws["A2"], ws["A3"] = 10, 20, 30
ws["A4"] = "=SUM(A1:A3)"  # 合計を計算

wb.save("formula.xlsx")

グラフの作成

グラフの作成も可能です。

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

wb = Workbook()
ws = wb.active

# データ作成
ws.append(["商品", "売上"])
ws.append(["スピンドル", 5, 3000])
ws.append(["ベースプレート", 2, 12000])
ws.append(["ボルト", 16, 40])

# グラフ範囲を指定
data = Reference(ws, min_col=2, min_row=1, max_row=4)
categories = Reference(ws, min_col=1, min_row=2, max_row=4)

chart = BarChart()
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)
chart.title = "売上グラフ"

ws.add_chart(chart, "E2")

wb.save("chart.xlsx")

注意点

.xls(古い形式)はサポートされません。.xlsx を使いましょう。
保存時に同じ名前を指定すると上書き保存されます。

よく使われるOpenPyXL関数一覧

機能関数・メソッド説明
新規作成Workbook()新しいExcelを作成
保存wb.save(filename)ファイルを保存
読み込みload_workbook(filename)既存のファイルを開く
シート取得wb.active / wb[sheetname]アクティブシート or 名前で取得
シート一覧wb.sheetnamesすべてのシート名を取得
行追加ws.append(list)行を追加
セル参照ws["A1"]セルを指定して操作
範囲取得ws["A1:C10"]セル範囲を取得
値の取得cell.valueセルの中身を取得
フォント設定Font(bold=True, color="FF0000")太字や色変更
背景色設定PatternFill(start_color="FFFF00", fill_type="solid")セルの塗りつぶし
数式設定ws["A4"] = "=SUM(A1:A3)"数式を設定
グラフ作成BarChart(), LineChart()棒グラフ・折れ線グラフなど

まとめ

OpenPyXLを使えば、
Excelでの繰り返し作業や日次レポートの更新を自動化 できます!
基本を覚えれば、

  • 日報の自動作成
  • データ集計+グラフ生成
  • 他のシステムから出力されたExcelの整形

など、業務の効率化に直結します

コメント

タイトルとURLをコピーしました