1. HOME
  2. ブログ
  3. IT技術
  4. Python と openpyxl で Excel を簡単に自動操作してみた!

Python と openpyxl で Excel を簡単に自動操作してみた!

openpyxl とは?

「openpyxl」は、Excel を自動で操作してくれる Python のモジュールです。

ブックの新規作成」「シートの追加」「セルへの入力」「グラフ作成」など…。

めんどくさい Excel 操作を、Python で組み立てることができてしまいます。

もし、あなたが Excel を利用した定型業務をしているのであれば、ぜひ openpyxl の導入を検討してみてください。

今まで膨大な時間がかかっていた作業が、Python のプログラムを実行するだけで終わってしまうかもしれません!

こちらの記事もオススメ!

openpyxl の導入方法

openpyxl は、Python のモジュールなので、お馴染みの pip コマンドを使ってインストールします。

上記をインストールした後は、プログラム内から以下のようにモジュールを読み込みます。

これで、openpyxl を利用する準備が整いました!

openpyxl の使用上の注意

セルへの書き込みは型を意識する

数字を文字型としてセルへ書き込むと、Excel でも文字として扱われてしまうため、グラフ化などに影響が出ます。

そのため、Excel のセルへ値を書き込む際には、型を意識して書き込んだ方がトラブルを回避できます。

Excel の旧ファイル形式は扱えない

Excel2003 まで使われていた拡張子「xls」形式のファイルは、残念ながら openpyxl では使えません。

Excel で一度「xls」ファイルを開いてから、手動で「xlsx」へ変換する必要があります。

今回の実装例で利用する openpyxl の関数

今回利用する openpyxl の関数は、以下となります。

新しい Excel ファイルのオブジェクトを作成する

デフォルトで「Sheet」という名前のシートが作成されます。

操作対象のシートオブジェクトを作成する

このシートオブジェクトで、「cell 関数」を利用していきます。

Excel のセルへ値を入力する

行と列は、数字を使って指定します。

行・列ともに「1」から指定可能で、「1」は1行目および A 列目を意味します。

折れ線グラフのオブジェクトを生成する

「棒グラフ」や「円グラフ」など、他のグラフオブジェクトを生成したい場合は、 LineChart 部分を変更してください。

折れ線グラフで使用するデータ範囲のオブジェクトを生成する

以下の場合、グラフのデータ範囲は Excel 表記で「データのあるシート!$最小列$最小行:$最大列$最大行」となります。

折れ線グラフのオブジェクトにデータを登録する

上記で生成したデータ範囲をグラフオブジェクトに渡します。

titles_from_data オプションを有効にすることで、データ範囲の内、1行目をラベルに使用します。

グラフをシートオブジェクトへ貼り付ける

貼り付けるセルの箇所は、「A1」など Excel のセル名で指定可能です。

新しいシートのオブジェクトを作成する

最初に作成した Excel ファイルオブジェクトに、新しいシートを作成します。

Excel ファイルを保存する

Excel ファイルに名前をつけて保存します。

他にも様々な機能がありますので、詳細なマニュアルは、以下のオフィシャルドキュメントを参照ください。

【openpyxlオフィシャルドキュメント】
https://openpyxl.readthedocs.io/en/stable/index.html

Python + openpyxl でサクッと自動化完成!

今回の実装例では、Linux のリソース状況を調査するコマンド「vmstat」のログをエクセルに転記して、CPU 使用率のグラフを作成します。

処理の流れ

  1. vmstat のデータを、カンマ区切りのデータとしてリストに取り込む
  2. リストを1つずつ Excel のセルへ転記する
  3. 新しいシートを作成する
  4. CPU 関連データの折れ線グラフを貼り付ける
  5. ファイル名をつけて Excel ブックを保存する

コード

上記作業を Python + openpyxl を使って自動化すると、以下のようになります。

サンプルデータ

上記、実装例のプログラムで使用した vmstat のサンプルデータは以下です。
(※クリックすると、ダウンロートが実行されます)

sample.txt

このプログラムを実行すると、以下の Excel ファイルが保存されます。
(※クリックすると、ダウンロートが実行されます)

test.xlsx

実装結果

作成した Excel ファイルを確認すると、シート名「Sheet」には以下のようなデータが読み込まれています。

シート名「Sheet1」には、折れ線グラフが出力されています。

1秒毎に vmstat を取得したので、167秒目から CPU 使用率が上がったことがわかります。

さいごに

Python + openpyxl の使い方はご理解いただけましたか?

Excel の操作を Python で実装できるので、様々な自動化が期待できます。

今回のように、システムが出力したテキストファイルを Excel へ転機してグラフ化する場合、どんなにテキストファイルが大量になっても、openpyxl を使えば一瞬でグラフを作ることができます。

その他にも、Excel ファイル同士の転記を行う業務や、スクレイピングと組み合わせて WEB の情報を Excel に転記する業務などの自動化が可能です。

皆さんを煩わせる面倒な Excel 業務は、Python + openpyxl でサクッと自動化しちゃいましょう!

(株)ライトコードは、WEB・アプリ・ゲーム開発に強い、ITが大好きな会社です。
Pythonでのシステム開発依頼・お見積もりはこちらまでお願いします。
また、Pythonが得意なエンジニアを積極採用中です!詳しくはこちらをご覧ください。

※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

こちらの記事もオススメ!

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事