みなさんこんにちは、最近はブロックチェーンの勉強に精を出しています、かいです。
みなさんExcelは知っていますよね?マイクロソフトのエクセルです!実は2,017年12月マイクロソフトが公式でPythonにExcelを搭載するか検討するという旨のニュースが発表されました。
そこで今回はPythonでExcelを操作するという内容で
- pipを用いて実際に導入する
- Excelをローカルにダウンロード(Officeがない方のため)
- PythonにExcelを読み込ませる
- PythonでExcelを新規作成する
- PythonでExcelに書き込む
といったエクセルを使う際の必須スキルまで実際にコードを例に挙げて説明しようと思います。PythonでExcelを扱いたいという人は是非参考にしていただければ幸いです!それではいってみましょう!!
なお、Pythonの記事については、こちらにまとめています。
Excelを扱うための準備
PythonでExcelを操作するには当然モジュールが必要になってきます。今回は、openpyxlというモジュールを使って操作する方法を説明していきます。
pipコマンドでopenpyxlをインストール
openpyxlをインストールするにはpipというコマンドを使って導入していきます。pipとはPython専用のバージョン管理システムのことです。バージョン管理とか言われてもわかりませんよね?大丈夫です、ちゃんと説明します。
まあ簡単にいうと、新しいパッケージを導入する時に使用するシステムのことです。新しいパッケージを導入したり、そのバージョンを上げたり下げたりするときにも使うのでバージョン管理システムなんて呼ばれてます。
Python2系であれ3系であれ最新のバージョンであれば標準ではいっているのですが、はいっていなければ導入しておいてください。Macであればターミナルを起動していただき、以下のコマンドを実行します。
$ pip —version
バージョンが確認できなければ導入されていません。また、pipコマンドを使うときはPython2系ではpip、3系ではpip3なので注意してください。pipを使ったパッケージのインストール方法はpip(or pip3) install 欲しいパッケージ名です。
今回はPython3を使って説明するので、つまりopenpyxlを導入するには
$ pip3 install openpyxl
ですね。
実行後
Successfully installed et-xmlfile-1.0.1 jdcal-1.3 openpyxl-2.4.9
こんな感じでSuccessfullyと表示されていれば成功でしょう。
テストデータのExcelファイルを準備
ではまずExcelのデータを準備していくのですが、いや、Excel入ってねーし・・という方もいるのではないかと思います。安心してください、今日はちゃんとデータをオンライン上で作成してローカルに保存する方法も説明します。まずはマイクロソフトのアカウントを取得していただき、
https://products.office.com/ja-jp/office-online/documents-spreadsheets-presentations-office-online
その後オンラインアプリの使用からExcelを指定していただくと、Webブラウザから直接Excelが表示されます。そこでサンプルとして使うデータを入力しておいてください。保存するとOneDriveに保存されます。
OneDriveにいくとおそらくドキュメントの中に先程作ったExcelファイルが格納されています。このファイルをご自身のパソコンの好きな場所にダウンロードしてください。
その後パスを指定して読み込むのですが、パスの知識に乏しい方は、実行するスクリプトと同じ階層に配置するのが良いでしょう。今回作成したExcelのサンプルファイルはこんな感じです。
Excelファイルを読み込む
まずはデータを読み込まなければ始まりません。この章では具体的に、
- シート名を抽出
- シート内のセルの値を抽出
の2つをやってみようと思います。
既存のテストデータを読み込む場合
既存のデータがある場合、px.load_workbookという関数をつかって読み込みます。px.load_workbook(‘エクセルのパス’)というふうに指定してやればOKです。
import openpyxl as px book = px.load_workbook('sample.xlsx’)
今回僕は、sample.xlsxというexcelファイルをこのスクリプトと同じ階層に作りmathとenglishという名前で2つのシートを作成していますね。
では、実際にシート名を抽出してちゃんと読み込めているか確認しましょう。シート名を抽出するには読み込んだファイル.get_sheet_names()です。
import openpyxl as px book = px.load_workbook('sample.xlsx') name = book.get_sheet_names() print(name)
コードはこんな感じになります。oepnpyxlをインポートして、それを読み込んで、nameにシート名を代入して、プリントするといった感じですね。結果を見てみると、
実行結果
['math', 'english’]
はい、しっかりプリントできました。次はシート内のセルの値を抽出してみましょう。やり方はファイル名.activeで、現在選択中のシートを選択しその後[“セルを指定”].valueとし指定したセルを抽出します。
import openpyxl as px book = px.load_workbook('sample.xlsx') now = book.active print(now["A1"].value)
コードはこんな感じになりますね。nowの中に有効化したシートを代入して、A1の値を抽出する。たったのそれだけです。
mathのシートにいるときの結果をみてみると、
実行結果
74
englishにいる時の結果を見てみると、
実行結果
80
意図したとおりに機能していますね。因みにA1からA3まで取得してやりたかったら
import openpyxl as px book = px.load_workbook('sample.xlsx') now = book.active for i in range(3): some = "A" + str(i + 1) print(now[some].value) i += 1
実行結果
74 76 70
このようにfor文で回してやると、複数抽出できるので覚えておくと良いでしょう。
新規で作成する場合
先程は既存のエクセルファイルをPythonで操作していましたが、Pythonでエクセルファイルを作るところからやりたい、ということもあるでしょう。そんなときは、px.Workbook()を使います。そして作成したファイル.save()で保存します。
()には引数として保存する名前を代入しましょう。
import openpyxl as px book = px.Workbook() book.save('sample2.xlsx')
実際にはこんな感じになりますね。sample2が作成されているか確認してみましょう。
実行結果
$ ls excel.py sample.xlsx sample2.xlsx
ちゃんとできていますね。
Excelファイルに書き込む
では先程作ったsample2にセルの値を書き込む方法を説明します。これも簡単でファイル.[“セル指定”].value = 入れる値と指定しましょう。では実際にA2にtest、B1に5という値を書き込んでプリントしてみます。
import openpyxl as px book = px.Workbook() sheet = book.active sheet["A2"].value = "test" sheet["B1"].value = 5 print(sheet["A2"].value) print(sheet["B1"].value) print(sheet["C1"].value) book.save("sample2.xlsx")
全て今まで勉強した知識でできるので特に説明はいりませんが、3行目のシートをアクティブにするのを忘れないように注意しましょう。結果を見てみると、
実行結果
test 5 None
うまくいっています。因みにC1には何も書き込んでいないのにプリントしたためNoneが返されました。何もないとNoneが返ってくるということも頭にいれておきましょう。
まとめ
いかがでしたでしょうか?今回はエクセルをPythonで操作することを目的としてやってきました。まずはpipでopenpyxlをインストール。そして、px.load_workbookで既存のファイルを読み込んだり、px.Workbook()で新規作成するんでしたね。
セルの指定は.valueで行い.activeでシートをアクティブにするのも忘れてはいけません。エクセルが自動で作れるようになると色々できることが広がると思いますのでぜひマスターしてしまいましょう!それでは!
なお、PythonでExcelを操作する以外で、色々とPythonについての基礎学習を進めたい方は以下の記事も合わせてご覧ください。
【Python入門完全攻略ガイド】