Pythonのopenpyxlを使ったexcelの基本的な操作【初心者向け】

トリ

Pythonでexcelを動かせるの?!

こんな悩みを解決します

エクセルの自動化といえばエクセルマクロですが、Pythonを使ったexcelの処理を覚えると、出来ることがさらに広がります。

とはいえPythonに興味があっても、何から始めればいいかわかりませんよね。

この記事では、そんなあなたに向けて、「自分で書いたPythonのコードでexcelを動かす」という体験をしてもらうための記事です。

この記事のゴール
  • Pythonを使って新しいexcelブックを作成し、シート名を変更、保存できるようになる

この程度の処理であれば手動でやった方が明らかに早いです。

しかし、この記事の目的は、Pythonでexcelを簡単に動かせるイメージを持ってもらうことなので、そこは気にしないでください。

この記事の手順に沿って作業をしていくと、短くても1時間はかかります。逆にいうと、早ければたったの1時間でPythonでexcelを動かす体験ができます

自分のパソコンでPythonを使える状態にする

Pythonは、excelのように最初からパソコンにインストールされているものではありません。

そのため、まずは自分のパソコンでPythonを使える状態にする必要があります。

この作業については、下記のサイトが初心者向けで非常にわかりやすいので参考にしてください。

参考 Pythonの開発環境を用意しよう!Progate

※Progateとは、初心者向けのプログラミング学習サイトです。有料版もありますが、上記のリンクは無料でみれます。

プログラミング未経験者にとって、「環境開発」という言葉はとても難しく感じてしまいます。

しかし難易度的には普段の仕事や学校でパソコンを使っていれば簡単と感じるレベルなので安心してください。

Pythonでexcelを使えるようにする(openpyxlのインポート)

Pythonでは、様々な操作を実行するための便利な道具(モジュールという)が用意されています

モジュールを使わなくてもPythonでexcelを操作することは可能ですが、それはとても非効率

Pythonでexcelを簡単に操作するために用意されているのが”openpyxl”という名前のモジュール。まずはopenpyxlを使える状態にしましょう。

テキストエディタに適当な名前のPythonファイル(example.py)を用意してください。

以下ではデスクトップに”test”というフォルダを作成して、その中にPythonファイルとexcelファイルを作成していきます。

※テキストエディタの基本的な使用方法は、上で紹介したProgateのページに載っています。

example.py:openpyxlをインポート
import openpyxl

これでやっと、Pythonでexcelを操作する下準備が整いました。

openpyxlで新しいexcelブックを作成する

まずは、空っぽのexcelブックを作ってみましょう。

先ほど作成したexample.pyに以下のコードを追記してください。#から始まっている行は、説明の記載なので入力不要です。

example.py:新しいブックを作成
import openpyxl
# ①新しいブックを作成
wb = openpyxl.Workbook()
# ②"new_file.xlsx"という名前で保存
wb.save("new_file.xlsx")

①では、空っぽのexcelファイルを作成し、左辺の”wb”に代入しています。wbは、excelブックに対して処理を行うための変数と呼ばれるものです。(言葉自体はあまり気にしないでもいいです)
②では、①で作ったexcelブックを保存します。保存したい名前に合わせて、ファイル名のところは適宜変えてみてください。

上記のコードまで入力できたら保存して、コマンドプロンプトから実行してみます。

うまくいっていれば、このようにデスクトップのフォルダにexcelブックが作成されているはず。

openpyxlでからのexcelブックを作成

openpyxlでシートを操作する

次に、先ほど作成したexcelブックのシートを処理してみます。作業としては、以下の4つです。

  • シート名の確認
  • シート名の変更
  • シートの追加
  • シートの削除

各シートの処理を説明する前に、excelブックを読み込む方法を確認しましょう。

テキストエディタに新しいPythonファイルを作成(sheet_operation.py)し、下記のコードを入力してください。

sheet_operation.py:先ほどのexcelブックを読み込む
import openpyxl
# ①excelブックを読み込む
wb = openpyxl.load_workbook("new_file.xlsx")

さっきとの違いは、既存のexcelブックを読み込んでいる点

先ほどは新規のexcelブックを作成したので”openpyxl.Workbook()”を使いましたが、今回は読み込みなので”openpyxl.load_workbook()”を使っています。

excelのシート名の確認

先ほど作成したexcelブックのシート名を、Pythonを使って取得してみます。

sheet_operation.py:シート名の出力
import openpyxl
# ①excelブックを読み込む
wb = openpyxl.load_workbook("new_file.xlsx")
# ②シート名の取得
ws = wb.sheetnames
print(ws)

②の1行目で”ws”に”wb”のシート名を格納しています。

その次の行では、wsに格納されたシート名を確認するために、コマンドプロンプト常に出力しています。

ここまでの内容でsheet_operation.pyを実行してみると

openpyxlでsheet名を出力

[“sheet”]という結果が出力されました。excelの初期設定によっては[“sheet1”, “sheet2”, “sheet3”]のように出力された人もいるかもしれません。

先ほど作成した空のexcelブックのシート名が出力されていれば成功です。

excelのシート名の変更

続いて、先ほど取得したexcelのシート名を変更してみます。

sheet_operation.py:シート名の出力
import openpyxl
# ①excelブックを読み込む
wb = openpyxl.load_workbook("new_file.xlsx")
# ②シート名の取得
ws = wb.sheetnames
print(ws)
# ③シート名の変更
sheet = wb[wb.sheetnames[0]]
sheet.title = "シート①"
wb.save("change_sheetname.xlsx")

③の1行目で”sheet”に”wb”の1番目のシート名を格納しています。②で定義した”ws”との違いは、“ws”がexcelシートの集合なのに対して、”sheet”は1つのシートになっている点

“wb.sheetnames[0]”が1番目のシートを意味しています。

少し癖があるのですが、0から始まります。2番目のシートを指定したいのであれば、”wb.sheetnames[1]”となります。

次の行で行なっているのが、シート名の変更。今回は1番目のシート名を“シート①”という名前に変えてみました。

シート名を変えた後に、excelブックを保存します。

保存名は”change_sheetname.xlsx”としました。仮に元のexcelブックに上書きしたければ、この部分を元のexcelブックと同じ”new_file.xlsx”とすればOKです。

実行後に作成されたexcelブックを開くと、、

openpyxlでシート名を変更

シート名が変更されて、“シート①”になっていますね。これで成功です。

これでPythonでexcelが動かせるようになった!

この記事の目的は、Pythonのopenpyxlモジュールを使って、自分で書いたコードでexcelを動かすことでした。

予備知識がない方にとっては苦しい部分もあったかもしれませんが、ここまでできれば後はガンガン新しいコードを覚えるだけです。

excelマクロでできることはopenpyxlで実現できますし、Pythonを使えば、インターネットからデータを自動で取得してexcelに落とし込んでグラフ化することだって簡単にできます。

この記事でPythonに興味をもったあなたには、下記の書籍で基礎を学ぶことをお勧めします。この記事は動くことを目的としていたので、細かい説明は全て端折っているので。。

また、Python初心者の勉強法については下記の記事もご覧ください。

Python入門者にオススメの勉強方法 Python入門者におすすめの勉強法【超初心者向け】

以上です!ここまで読んでいただき、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です