DX(デジタルトランスフォーメーション)

Excelを自動化できる!Pythonのモジュール「OpenPyXL」で効率化してみた

Excelを自動化できる!Pythonのモジュール「OpenPyXL」で効率化してみた

現在では表計算ソフトのExcelは企業の業務に欠かせない存在となっていますよね。

ですが、実際に活用していくと不便さを感じる場面もあり、これが業務の足かせとなって効率を下げてしまうことも。ところが今このExcelはプログラミング言語「Python」と組み合わさることで、操作を自動化して業務の効率化を行えるようになっています。

ちなみにどうやって自動化を行うのかというと、ExcelとPythonを結び付けるモジュール「OpenPyXL」を活用していくのです。

今回はこのExcel+Pythonで何ができるのかからExcel+Pythonを実現する「OpenPyXL」の基礎や準備について。また、簡単なExcelファイル、「シート」「セル」の操作方法をそれぞれ説明していきます。ぜひ、Excel+Pythonの自動化で日々の業務効率を向上させてください。

Excel+Pythonで何ができるのか

Excel+Pythonで何ができるのか

それでは、Excel+Pythonで何ができるのかについて説明していきましょう。こちらでは以下のようなことが行えます。

  1. Excelで行っている作業をPythonで自動化できる
  2. マクロより高い自由度で活用できる
まず、ExcelとPythonを組み合わせると、普段行っている業務を自動化可能。
具体的にはデータの集計やファイルの統合などを簡単に行えます。そのため、手作業でExcelに入力することに割く時間や手間を削減することが可能です。
また、マクロより高い自由度で活用できます。
ちなみにマクロとはExcel内で利用できる自動化機能のこと。VBAというプログラミング言語で記述することで操作できるものですが、あくまでもその自由度はExcel内に限定。

ですから、Excel内でできないことは基本的にマクロでもできないため、自由度はそれほど高くはないのです。

一方でExcel+Pythonの自動化は、プログラミング言語「Python」によって操作が行えるので自由度が高く、スキルがあれば自動化できる項目は非常に多い。ですので、Excel+Pythonの方がより業務の効率化につながっていきます。

以上がExcel+Pythonで何ができるのかについてです。

これを踏まえて以下では、Excel+Pythonを実現する「OpenPyXL」について説明してきましょう。

Excel+Pythonの「OpenPyXL」とは

Excel+Pythonの「OpenPyXL」とは

このExcel+Pythonを実現する「OpenPyXL」は以下のようなものです。

  1. Pythonのモジュールである
  2. Excelファイルxlsxに読み書きなどの操作を行える
  3. 他のPythonのモジュールと連携できる
まず、Excel+Pythonの「OpenPyXL」はPythonのモジュールです。
モジュールは他の言葉ではライブラリとも呼ばれており、こちらは有益なプログラムの集まりを指すもの。
これによってPythonからExcelファイルの操作ができます。具体的にはExcelファイルに読み書きなどが可能。
ちなみにExcelファイルというのは「.xlsx」の拡張子を持ったものです。(MicrosoftのExcel以外にも、フリーの表計算ソフトでも利用されているファイル形式。)

こちらに当てはまれば「OpenPyXL」を利用可能であり自動化が行えます。

さらに、Excel+Pythonの「OpenPyXL」はPythonによって動作するため、他のモジュールと連携可能です。ですから、エクセルで利用できなかったような機能を持つモジュールを連携して、業務の効率化に利用することができます。

以上がExcel+Pythonを実現する「OpenPyXL」についてです。やはり、Excel単体を利用するよりもExcel+Pythonの「OpenPyXL」の方が、複数のメリットがあることがみて取れるでしょう。

これを踏まえて以下からExcel+Pythonの「OpenPyXL」で自動化をするための準備についてお伝えしていきます。

Excel+Python自動化をするための準備

Excel+Python自動化をするための準備

Excel+Pythonの「OpenPyXL」で自動化をしていくには、以下の手順で準備して行く必要があります。

1. Pythonをインストールする

まず、Pythonをインストールしましょう。

こちらについてはPythonの公式やパッケージで導入するなど複数の方法があります。ですので、お好きな方法でPythonが利用できる環境を用意してください。

2. OpenPyXLをインストールする

次に、OpenPyXLをインストールしましょう。

こちらについては1の作業が行われていればコマンドで簡単にできます。
具体的にはコマンドプロントなどのCUI「Character-based User Interface」、文字列のみが表示される入力画面を用意しましょう。こちらはWindowsの場合は検索で「cmd」と入力すれば出てきます。

そして、コマンドプロントが立ち上がれば以下のように入力してください。

pip install openpyxl

これによってOpenPyXLがインストールされます。

なお、他のOSでは入力のコマンドが多少違いますがおおよそは同じ。ここまでできればExcel+Pythonの「OpenPyXL」を利用できる環境は整っています。

3.  Excelファイルを用意する

あとはExcelファイルを用意しましょう。

なお、利用したいExcelファイルや練習のために簡単に作成したもので大丈夫。もちろんOpenPyXLから新規で作成することもできるので必ず用意する必要はありませんが、最初はあったほうがわかりやすいですよね。

これらがExcel+Pythonの「OpenPyXL」で自動化をしていく準備の手順になります。

簡単なのでみなさんもやってみてください。それでは、次の章から実際にOpenPyXLでExcelファイルを操作してみましょう。

OpenPyXLでExcelファイルを操作しよう

OpenPyXLでExcelファイルを操作しよう

基本的にOpenPyXLはPythonで動いているので、できればPythonがどのような言語であるのかを知っておくとわかりやすいです。ただし、コマンド自体はそれほど難しくはないので、以下で紹介するように打ち込んでいけば操作はできます。

ちなみに以下の内容を踏まえておくと説明がわかりやすくなるでしょう。

  • Excelファイルを「ワークブック」と呼ぶ
  • データ入力などを行う場所を「ワークシート」と呼ぶ
  • 入力を行うマスを「セル」と呼ぶ
  • 横を「行」、縦を「列」と呼ぶ
また、コマンドは上で説明した手順でコマンドプロンプトを起動し、以下のように入力してpythonを対話モードにしてから実行してください。(利用しているエディタやIDEなどがあるのならそちらからでもokです)
python

それでは、Excelファイル名は「sample.xlsx」として説明をおこなっていきます。以下の操作を行っていきましょう。

1. Excelファイルを読み込む

まず、Excelファイルの読み込みはpythonを対話モードにして、以下のコマンドを入力することでできます。

import openpyxl
wb = openpyxl.load_workbook('c:\work\sample.xlsx')
これはopenpyxlを起動して、用意されたExcelファイルをワークブックとして読み込んでいくことを表しています。
なお、「c:\work\sample.xlsx」は用意したExcelファイルの場所を示しており、場合よってはファイル名のみでも大丈夫です。(Pythonのファイルがある場所にExcelファイルがある場合)

こちらはもっとも基本的なコマンドであるので、用意されたExcelファイルを読み込む際はこちらのように記述してください。

2. Excelファイルの作成、保存

次に、Excelファイルの作成、保存を行ってみましょう。

こちらは上のようにpythonを対話モードにしてExcelファイルの読み込みを行い、以下のようにコマンドします。

import openpyxl
wb = openpyxl.load_workbook('c:\work\sample.xlsx')
wb.save('c:\work\sample.xlsx')
wb.close()
これは読み込んだExcelファイルを「c:\work\sample.xlsx」として保存する、上書き保存を行って操作を終えています。
ちなみに「sample.xlsx」を別の名前「sample2.xlsx」とすると、その名前で新しくファイルが作成されます。

さらに、これ以上の操作を行う場合には「wb.save(‘c:\work\sample.xlsx’)」の前で適切なコマンドを入力を行い、ワークブックの操作を行うのが通例です。

操作を行ったExcelファイルを実行する場合には以下のように記入してください。

python ファイル名.py
上に沿っていけば「python sample.py」と入力すればOKです。そうすれば、Excelファイルが実行されワークブックが表示されます。

以上が簡単なOpenPyXLでのExcelファイルを操作です。

基本的にはpythonを対話モードにして、上のコマンドを正しく入力すれば操作が可能。これらの内容を踏まえて以下ではOpenPyXLで「シート」「セル」を操作していきましょう。

OpenPyXLで「シート」「セル」を操作しよう

OpenPyXLで「シート」「セル」を操作しよう

ここでは、以下の簡単な「シート」と「セル」の操作を行っていきます。もちろん、ここでも上と同様にpythonを対話モードなどにしてから実行してください。

1. シートの選択

まず、1のシートの選択は以下の2つの方法で操作できます。

ws = wb.active
こちらを説明していくと、デフォルトでExcelファイルを開いた場合には1枚のシートが既に選択された状態になっています。そのため、「.active」というコマンドでシートの選択がされていることを意味しているのです。
ws = wb["sample"]
一方で複数のシートがある場合には[“sample”]、「sample」は拡張子を除いたファイル名で指定可能。仮にsample1〜3のシートがあれば[“sample1”]でシート1、[“sample2”]でシート2が選択されます。これによってシートの切り替えが可能です。

2. シートの名前を変更する

次に、シートの名前を変更する操作は以下で行えます。

import openpyxl
wb = openpyxl.load_workbook('c:\work\sample.xlsx')
ws = wb["Sheet"]
ws.title = "new Sheet"
wb.save('c:\work\sample.xlsx')
wb.close()
ここでは、ワークブック上のシート「Sheet」を選択し、「ws.title」というコマンドで「new Sheet」へとシート名を変更。後はそれを保存して終了しています。

3. セルの操作

また、セルの操作は以下のコマンドで行うことが可能です。

import openpyxl
wb = openpyxl.load_workbook('c:\work\sample.xlsx')
ws = wb.active
ws['A1'] = 100
ws['B1'] ='こんにちは'
wb.save('c:\work\sample.xlsx')
wb.close()
ここでは、読み込んだExcelファイルからワークブック、シートを選択します。そして、A1のセルに100、B1のセルに「こんにちは」と入力し、保存していることを意味しています。

こちらはセルの名前から入力を操作していく方法です。

4. 行と列を指定して行うセルの操作(R1C1形式)

一方で、行と列から入力する方法もあります。こちらでは以下のように入力。

import openpyxl
wb = openpyxl.load_workbook('c:\work\sample.xlsx')
ws = wb.active
ws.cell(row=1, column=1, value=100)
ws.cell(row=1, column=2, value='こんにちは')
wb.save('c:\work\sample.xlsx')
wb.close()
こちらは3と同じ操作を行っていますが、A1のセルに100と入力する場合では「ws.cell(row=1, column=1, value=100)」としています。これはセルの行1、列1に100を入力するように指示しており、結果A1のセルに入力がなされているのです。

このように入力する方法をR1C1形式と呼びます。こちらもやってみましょう。

以上が簡単なシートとセルの操作です。ここまで説明を聞いていれば、何となくどのようにコマンドを入力していけば良いのかがわかるでしょう。

この他にもOpenPyXLではさまざまなことができるので、それらを組み合わせていけば自動化ができます。ぜひ、そのようなことが行えるように初歩から学んでみましょう。

Excel+Python自動化で気をつけること

Excel+Python自動化で気をつけること

上ではExcel+PythonのOpenPyXLでExcelファイルを操作する方法を説明してきました。こちらを学んでいけば自動化を行うことができますが、その際には以下のような気を付けるべき点があります。

Pythonをインストールできない場合がある
まず、企業で実際にExcel+PythonのOpenPyXLを利用して、業務を効率化しようとしてもできない場合があります。これはPythonについての理解が企業内でない場合やセキュリティ面の問題から導入ができないことがあるのです。

ですので、利用してよいのかを社内の担当に確認してみましょう。

自動化の際に問題が起こる場合がある

次に、Excel+PythonのOpenPyXLでは自動化の際に問題が起こる可能性があります。

具体的には表示形式が変わってしまうという問題です。例えば、元のExcelファイルにユーザー定義という表示の形式で、年月日がセルに記載されていたとします。この際にOpenPyXLを利用して読み込みを行うと、年月日がシリアル値(本来は表に出てこないExcel内の値)で表示されてしまうことがあるのです。
こちらはバージョンにもよるのですが、起こってしまうことがあるので注意が必要です。ちなみにこれが起こった場合には手動で訂正するか、コマンドで対処する必要があります。詳しくは説明しませんが、このような問題が起こり得ると想定しておくのがよいでしょう。

以上の点を留意しつつ、Excel+PythonのOpenPyXLで自動化を行ってみてください。

 

まとめ

最後に、Excel+Pythonの自動化を考えている人にお伝えしたいことを紹介してきます。

これまで以下の点を説明してきました。

  • Excel+PythonではExcelで行っている作業をPythonで自動化できる
  • Excel+PythonのOpenPyXLはPythonのモジュールである
  • PythonとOpenPyXLを利用可能な状態にするのが主な準備である
  • Excelファイルを読み込みは「wb = openpyxl.load_workbook(‘ファイルの保存場所’)」でできる
  • シートの選択は「ws = wb[“シート名”]」、セルの操作は「ws[‘セルの場所’] = 数値など」というように操作可能
  • 自動化の際に問題が起こる場合があるので注意する

これに加えてお伝えしたいのが、他にもExcel+Pythonで自動化できる以下のようなものがあるということ。

  1. pywin32
  2. xlwings
簡単に紹介すると、まず1のpywin32はExcelがインストールされたWindows専用のモジュール。エクセルを直接操作できるというメリットを持っており、OpenPyXLにも負けない機能を有しています。
次に、2のxlwingsもExcelがインストールされている必要があるモジュールです。こちらはVBAのマクロをPythonで書けるようになるものであり、エクセルで利用できるすべてのファイルが対応しているというメリットがあります。

これらのモジュールも有用なので、よろしければOpenPyXLと共に検討してみてください。そうすればみなさんのとって最も適した、Excel+Pythonのモジュールで自動化を行い、業務の効率を計れるでしょう。

今回はExcel+Pythonで業務を自動化するテクニックをお伝えしましたが、さらにシステムとして自動化を行いたい場合はプログラムの開発が必要でしょう。当AIZINEを運営する株式会社お多福labは、システム開発やデータ分析などで企業のDXをサポートしています。興味がございましたら是非お問い合わせください。

【お知らせ】

当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。

御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。

お多福ラボコーポレートサイトへのバナー

トップへ戻る
タイトルとURLをコピーしました