「全然仕事が終わらない。。」
「excel(エクセル)へのデータ入力を自動化したい!」
こういったお悩みを持たれている方が数多くいらっしゃいます。
昔は残業さえしてしまえば時間で解決できる問題ではありましたが、最近では働き方改革によって「早く帰れ!」と上司から注意され、強制的に帰らされる事があるのではないでしょうか?
そういった時代では残った仕事を家に持ち帰り、寝る時間を惜しんで作業をするハメになります。
本来であれば、家ではのんびりとテレビや趣味など自分の時間を過ごしたいものです。
また、家族を持たれている方は子供と遊んだり、奥さんと一緒にコミュニケーションをとったりしてスキンシップをはかりたいでしょう。
多くの方は家に持ち帰ってまで仕事をしたくありません。
これからの時代、いかにして効率的に仕事をこなすかがより重要視されています。
今回は仕事で多く使われるエクセルの読み書きをプログラミング言語Pythonを使って、データの入力などの機械的な作業を自動化する事ができる記事内容となっております。
本記事を読み終える事で、エクセルにおける単純作業に多くの時間をかけることなく、自分がやるべき仕事に注力することが可能になるでしょう。
本記事は以下の方にオススメする内容になっております。
・excel(エクセル)の自動化(読み書き)を自動化したい方
・Pythonを学習していて、本業にも生かしたい方
・Macを使われている方
※本記事ではMacを使用されている方を想定して記事作成を行なっている為、Windowsをお持ちの方と少し作業内容が異なる事がありますので、予めご了承ください。
目次
Openpyxlをインストール
まず、Excel(エクセル)を自動化する前にやるべき事があります。
Pythonを使用して、Excel(エクセル)を操作するには必要なモジュールをインストールします。
それが、Openpyxlです。
こちらはPythonでExcel(エクセル)を作成・編集・読み込みができるモジュールになります。
ターミナルにて以下のコマンドを入力します。
pip install --upgrade pip pip3 install openpyxl
モジュールがインストール確認を行うために、以下のコマンドを入力します。
エラーが発生しなければ、インストール完了です。
python3 >>> import openpyxl >>>
もし、ご自身のPCにてインストールしたモジュールのバージョンエラーなどにお困りの際は、仮想環境の構築をすることをオススメします。
仮想環境の構築方法が分からない方は下記の記事をご参照ください。
LibreOfficeをインストール
次にLibreOfficeというアプリケーションをインストールします。
MacではExcelファイルを開くアプリケーションがありませんので、Pythonにてどんなに読み書きを自動化してもターミナル上でしか確認ができません。
折角なので、自分がどのようなコード、処理を行なったのか確認したいですよね。
こちらのアプリはMacにてExcel(エクセル)を表示させるためのアプリとなっております。
これにより、ターミナル上だけでなく、実際のExcelにて処理の確認ができるようになります。
下記のサイトにアクセスし、ダウンロードを行なってください。
Excel(エクセル)ファイルの作成
準備が整ったところで、実際にコードの記述をしていきます。
まずは読み書きを行うExcelファイルが必要なので、ファイルの作成を行うコードを記述します。
import openpyxl as op excelfile = op.Workbook() excelfile.save('test.xlsx')
Excelファイルを新しく作成する場合、workbook( )にてインスタンスを作成します。
このままでは名前のないファイルが作成されただけで、Excelファイルと認識されません。
なので、save( )に作成したファイルの名前とExcelファイルと認識させるために拡張子(.xlsx)を引数に入力します。
これでExcelファイルが保存されました。
lsコマンドにてファイルの中身を確認すると、先ほど作成したファイルがターミナル上で確認できるかと思います。
ターミナル上だけでなく、実際にExcelファイルを開いて確認してみます。
先ほど作成されたExcelファイルまでディレクトリを移動し、右クリックにて開くを押します。
開くをクリックして、先ほど作成されたExcelファイルが表示されるかと思います。
確認はできたものの、まだ何も読み書きを行なっていないので、次の章にて実際に読み書きを行うコードを記述していきます。
Excel(エクセル)ファイルに書き込み
それでは、最初に真っ白なExcelファイルに書き込みを行なっていきます。
以下がコードになります。
import openpyxl as op excelfile = op.Workbook() write = excelfile.active #書き込み write["A1"].value = "test" write["B1"].value = "Python" print(write["A1"].value) print(write["B1"].value) print(write["C1"].value) excelfile.save("test.xlsx")
まず、Excelファイルを操作する際にはactiveメソッドを使って、シートを操作できるようにします。
次のコードにて書き込みを行なっているのですが、買い込む際には書く場所を指定した変数を用意し、文字列もしくは数値を入力します。
組み込み関数printでは読み込みではなく、実際にExcelファイルに書き込んだデータを出力するコードになっております。
こちらのコードをターミナルにて実行すると、以下の出力が返ってくるかと思います。
test Python None
writeA1とwriteB1にはそれぞれ書き込みを行なったため、文字列が出力さますが sheetC1には書き込みを行なっていないので、Noneと出力されました。
このように、書き込みを行なっていなくてもエラーが表示されるのではなく、Noneが返ってきます。
最後には書き込みを行なったExcelファイルを保存するコードになります。
ターミナル上だけでなく、LibreOfficeにて実際に書き込みが行われているのか確認を行なってみて下さい。
Excel(エクセル)ファイルを読み込み
次に実際にデータを入力したコードを読み込んでみましょう。
以下が読み込みを行うコードになります。
import openpyxl as op load = op.load_workbook('test.xlsx') read = load.active #行(column)と列(row)を指定 print(read.cell(column=1, row=1).value) print(read['B1'].value) #行から全て取得 for column in read.columns: print('----------------------------') for cell in column: print(cell.value) #列から全て取得 for row in read.rows: print('----------------------------') for cell in row: print(cell.value)
今回は色々な読み込み方の処理コードを記載いたしました。
読み込みを行うためには、load_workbook関数を使って、引数に読み込みを行うExcelファイルの名前を指定します。
最初の読み込みを行うコードでは、予めどこから情報を取得するのか行と列を指定して出力を行なっております。
既に取得したい情報がどこにあるのか分かっている場合、こちらのやり方がいいかと思われます。
次のコードでは、for文を使って列もしく行に記載されている全ての情報を取得する場合に使われるやり方になります。
Excelファイルの情報が膨大かつ取得したい情報がどこにあるのか分からない場合に大変便利な手法になります。
ターミナルにて実行を行うと、以下のような結果が得られるかと思います。
test Python ---------------------------- test ---------------------------- Python ---------------------------- test Python
結果を見ると、どのようにして情報が取得されているのか視覚的に確認できます。
また、今後もプログラミングに取り組み続けていく中で、実務に利用できる学びを身につけていかなければなりません。
業務効率化・自動化を実現するために、実務のヒントとなったおすすめのPython本は以下のものになります。
・退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング
まとめ
いかがでしたでしょうか?
今回はプログラミング言語Pythonを使用した、Excelの読み書きを行いました。
今回は基礎的な部分しか記載していないので、物足りなかった方もいらっしゃるかと思いますので、本記事を通して「もっと色々な作業をしてみたい!」という方は以下の記事を参考に学習を行なってみて下さい。
是非、ご自身のお仕事に活かせるとことを切に願っております。
最後まで一読していただき、ありがとうございました!
プログラミング学習で作りたいものがない場合
独学・未経験から始める人も少なくないので、プログラミング学習の継続や学習を続けたスキルアップにはそれなりのハードルが設けられています。
また、プログラミング学習においても、学習者によってはすでに学習対象とするプログラミング言語や狙っている分野が存在するかもしれません。
そのため、費用を抑えて効率的にピンポイント学習で取り組みたいと考える人も少なくありません。
また、プログラミング学習において目的を持って取り組むことは大切ですが、『何を作ればいいかわからない。。』といったスタートの切り方で悩む人もいると思います。
そういったプログラミング学習の指標となる取り組み方について詳細に記載したまとめ記事がありますので、そちらも参照して頂けると幸いです。
Pythonに特化した学習を進めたい人へ
筆者自身は、Pythonista(Python専門エンジニア)としてプログラミング言語Pythonを利用していますが、これには取り組む理由があります。
プログラミングの世界では、IT業界に深く関わる技術的トレンドがあります。
日夜新しい製品・サービスが開発されていく中で、需要のあるプログラミング言語を扱わなければなりません。
トレンドに合わせた学習がプログラミングにおいても重要となるため、使われることのないプログラミング言語を学習しても意味がありません。
こういった点から、トレンド・年収面・需要・将来性などを含め、プログラミング言語Pythonは学習対象としておすすめとなります。
オンラインPython学習サービス – 『PyQ™(パイキュー)』
「PyQ™」は、プログラミング初心者にも優しく、また実務的なプログラミングを段階的に学べることを目指し、開発されたオンラインPython学習サービスです。
Pythonにおける書籍の監修やPythonプロフェッショナルによるサポートもあり、内容は充実しています。
技術書1冊分(3000円相当)の価格で、1ヶ月まるまるプログラミング言語Pythonを学習することができます。
特に、、、
・プログラミングをはじめて学びたい未経験者
・本、動画、他のオンライン学習システムで学習することに挫折したプログラミング初心者
・エンジニアを目指している方(特にPythonエンジニア)
かなり充実したコンテンツと環境構築不要なため、今すぐにでも学び始めたい・学び直したい、Pythonエンジニアを目指したい人におすすめです。
オンラインPython学習サービス「PyQ™(パイキュー)」 ※技術書1冊分の価格から始めて実務レベルのPythonが習得できます |