タイトルのテキスト
タイトルのテキスト
タイトルのテキスト
タイトルのテキスト

Pythonでエクセルファイルに数字を入力してみた【openpyxl】

Python エクセル・スプレッドシート

t f B! P L

 

〇やってみたこと

エクセルの自動化といえば、VBAですが、今回は、Pythonでエクセルファイルに数字を入力してみました。

VBAなら

VBA

Workbooks.Add

Range("a1").Value = 123123

ActiveWorkbook.Save

 

こんな感じでしょうか。

新しいワークシートを作成して、

最初のセルに “123123” と入力

エクセルファイルを保存する。

こんな操作をPythonで行ってみます。

Pythonでやってみる

最初にPythonのエディターはIDLEを使いました。

エディターは僕はスパイダーが使いやすいと思います。しかし、ここはあえて、よりスタンダードと思われるIDLE を使いました。 

IDLEを起動させて、名前をつけて保存します。 

Python形式でファイルが保存されるので、右クリックをおして、IDLEのエディターを開きます。 

Pythonでエクセルを操作するには、openpyxlライブラリをインポートさせて使います。

IDLEに以下のコードを入力します。

pythonコード

import openpyxl as excel

 book = excel.Workbook()

sheet = book.active

sheet["A1"] = "123123"

book.save("12345.xlsx") 


コードを入力したら、上の “RUN” ボタンお押して、モジュールを動かします。 

Pythonのファイルがあるデスクトップ上にエクセルファイル “12345.xlsx” が作られました。


 エクセルファイルを開いてみると、ちゃんと“123123”と入力されていました。
 

〇コードの解説

Pythonでエクセルを操作するには、“openpyxl” を使います。

openpyxlはエクセルファイルを操作するPythonライブラリです。

この openpyxl を使うことで、エクセルのさまざまな操作を行うことができます。

しかし、このopenpyxl、操作できるエクセルファイルは、拡張子が “.xlsx” のみとなります。

 

・ライブラリを読み込む

import openpyxl as excel

・新規ワークブックを作る

book = excel.Workbook()

・ワークシートを取得

sheet = book.active

・セルA1に“123123”と入力

sheet["A1"] = "123123"

・ファイルの保存

book.save("12345.xlsx")

 

となります。 

エクセルに123123 と入力する意味は特にないのですが、Pythonにはいろいろな関数もはいっているので、それらで集計させた結果をエクセルに出力するなどの使い方ができます。

僕は、仕事では、

Pythonプログラムを起動させると、製品情報、日付などを聞いてきて、その情報をQRコード化し、そのQRコードをエクセルファイルに出力する

といったプログラムを作成して使用してます。

PythonVBAと比較すると、すこし、まどろっこしく感じる面もありますが、QRコードを作るライブラリなど、VBAにないものもたくさんあるので、甲乙はつけがたいです。

〇まとめ

このopenpyxl・・・エクセルがインストールされていないパソコンでも動きます。

ここがPythonのすごいところ。

VBAWindows上でエクセルがインストールされている環境では確かに、無敵に近い能力があります。

ほとんどがVBAでできてしまいます。

こう見るとVBAの方が使いやすいじゃないかと思いますが、

しかし、エクセルがインストールされていなかったり、OSWindowsじゃなかったりすると動かすことができません。

その点、PythonOSに依存せず動かすことができます。

僕は、iPhoneでもエクセルを使うことがあるので、その時はPythonで自動化させています。

パワーオートメイト、や VBAPythonといろいろなツールがあって、どれが上、下という事ではないので、いろいろ使ってみると面白いですね。

koneka1208

koneka1208

自己紹介

自分の写真
エクセル好きの窓際会社員です。 エクセルの操作法や日々の会社で得た知見などを発信していきます。 よろしくお願いします。

ブログ アーカイブ

連絡フォーム

名前

メール *

メッセージ *

QooQ