PythonでExcelシートから読み取りと書き込みをする方法【ライブラリの基本】

ケンケン
みなさん、こんにはケンケンです。
ぺんぺん
ぺんぺんです。
ケンケン
やあ、ぺんぺん。ぺんぺんはPythonでエクセルを操作できるって知ってた?
ぺんぺん
知りません。何ができるの?
ケンケン
そっか、エクセルの操作全般を自動化することもできるよ。
ケンケン
VBAの記事で紹介したことももちろんできるんだ。
ぺんぺん
へぇーそうなんだ、それじゃファイルやフォルダの操作もできるの?
ケンケン
もちろんだよ、それじゃ今回はファイル操作をやってみよう!
ぺんぺん
はーい!たのしみ!

Pythonでエクセルを操作する第一歩

あらかじめ書式が設定されたエクセルシートを各自に配布して、
それをひとつにシートに集計する仕事というのがしばしばあります。
少人数ならコピペで済ませてしまえば良いかもしれませんが、人数が多くなってくると話は別ですね。
そこで、今回はPythonでエクセルファイルを読み込んで別シートに書き出すプログラムを作っていきます。

イメージをつかもう

今回用意するフォルダやファイル構成とプログラム実行結果を先にお見せします。

▶フォルダ構成

フォルダ・・・psychology test

ファイル(書き出し用)・・・output.xls

ファイル(読み込み用)・・・心理テスト_kimura.xlsx、心理テスト_satou.xlsx、心理テスト_suzuki.xlsx、心理テスト_tanaka.xlsx、心理テスト_yoshida.xlsx

▶ファイルの内容

ご覧のとおりエクセルシートに簡単な心理アンケートがあります。

書式は統一されており、すべてのファイルに同様の心理アンケートを用意しています。

このアンケート情報をすべてPythonで読み込み、以下のようにoutputファイルに書き出します。

 

使えるライブラリをインストールしよう

それでは、実際にコードを書いていきますが、その前にまず、ライブラリをインストールします。
ライブラリとは、あらかじめ便利な機能が組み込まれたプログラムのことです。
Pythonでは様々な機能がライブラリとして標準で使えるので大変便利です。
それでは、早速今回使うライブラリをインストールしてみましょう。

▶今回使うライブラリ

xlrd・・・エクセルファイルを読み込む

tablib・・・エクセルファイルに書き込む

インストールの方法は簡単です。
Windowsをお使いならコマンドプロンプトを起動させて以下のようにコマンドを入力してください。
コマンドプロンプトが見当たらない方は、
スタートメニューから「cmd」と入力すると発見できます。

コードを書いてみよう

ライブラリをインストールできたら、早速コードを書いていきましょう。

コードの解説

import glob,xlrd,tablib

インストールしたライブラリのxlrd,tablibをインポートします。

globについては後述します。

インポートとは

みなさん、こんにちはケンケンです。   Pythonの基本をお送りしています。 前回は、for文と条件分岐の基本をお伝えしました。 前回の記事は以下をご覧ください。 [sitecard subtitl[…]

 

headers = (‘実施日’,’氏名’,’質問1′,’質問2′,’質問3′,’質問4′,’質問5′, ‘質問6′,’質問7′,’質問8′,’質問9′,’質問10’)

書き出し先のエクセルシート1行目の一覧をタプル形式で作成し変数headersに格納しています。

 

data = []

空のリストを作っておきます。
ファイルを読み込んで次々にデータを追加していくので、まず空のリストを作る必要があります。
リスト・タプル復習記事

みなさん、こんにちはケンケンです。   Pythonの基本事項をお伝えしています。 今回は、リストとタプルについてお話しします。 データをまとめておいておく大きな箱のようなものです。 これをうまく使い[…]

 

for file in glob.glob(r”C:\Users\ユーザー名\Desktop\psychology test\*.xlsx”):

for文を使って各ファイルを読み込むためのループ処理をします。
globは指定された特定のディレクトリにマッチするファイルを取得することができるメソッドです。
インポートすることで使えます。
今回は、psychology testフォルダ直下にある拡張子が「.xlsx」であるファイルを対象としています。
拡張子前のアスタリスク「*」はワイルドカードを表します。
ワイルドカードがよく分からない方は参考記事として以下をご覧ください。
アスタリスク関連記事

みなさん、こんにちはケンケンです。 今回は、ファイルやフォルダを操作して、ファイル名一覧を作成したりファイルに記述されているデータを取得してシートに転記する方法をご紹介します。   実務で無数のファイルと格闘して[…]

globメソッドで取得したファイル名を変数fileに格納して次のコードに移ります。
ちなみにコード内のーザー名」はみなさんのPCのユーザー名をあてはめてください。
このままではエラーになります。当然、みなさんのPC環境によってアドレスは変わりますのでご注意ください。

 

book = xlrd.open_workbook(file)

インポートしたxlrdのopenメソッドを使って先ほど変数fileに格納したファイル名のファイルを開きます。

s = book.sheet_by_index(0)

開いたファイルの最初のシートをインデックスを指定して変数sに格納します。
インデックスは0から始まるのでしたね。

 

 data.append([s.cell_value(0, 2),s.cell_value(0, 3), s.cell_value(2, 1),s.cell_value(3, 1),s.cell_value(4, 1), s.cell_value(5, 1),s.cell_value(6, 1),s.cell_value(7, 1), s.cell_value(8, 1),s.cell_value(9, 1),s.cell_value(10, 1), s.cell_value(11, 1)])

長いですが、内容は単純です。
先ほど作ったリストdataに開いたファイルのデータを流し込んでいます。
「cell_value(行, 列)」でエクセルの行と列を指定できます。
エクセルと違うのは、行列の指定番号が1からではなく0からということです。
A列3行目は(0, 2)と表現します。
appendは以前紹介しましたので、復習したい方は以下の記事をご覧ください。
append復習記事

みなさん、こんにちはケンケンです。   Pythonの基本事項をお伝えしています。 今回は、リストとタプルについてお話しします。 データをまとめておいておく大きな箱のようなものです。 これをうまく使い[…]

output = tablib.Dataset(*data, headers = headers)

表データ形式を作成してくれるメソッドです。
tablibをインポートしたおかげで使える方法です。
これをoutput変数に格納して最後の行に行きましょう。

 

open(‘output.xls’, ‘wb’).write(output.xls)

書き込み用ファイルoutputをopen関数で開きます。
この時、第2引数でモードを設定できます。
今回は、書き込み用(w)かつバイナリ形式(b)で開きます。
バイナリ形式とは簡単に言うと文字列を含む全範囲のデータ、といった感じでしょうか。
バイナリ形式でないとエラーを起こすことがあるので、今回含めました。
詳しくはご自分で調べていただければと思います。
そして、開いたoutputファイルに書き込んで終了です。

まとめ

いかがですか。

Pythonでもエクセルファイルやシートの操作が可能なのがお分かりいただけたと思います。

しかも、ライブラリを使うと10数行でコードが書けてしまいます。

このようにPythonでは様々なライブラリを駆使することでサクッとコードを書いて自動化することが可能なので、

これからプログラミング学んでみたいという方にもやさしい言語かと思います。

 

今回、使ったライブラリより強力なものも存在するかもしれないですし、おそらく存在します。

それらをコツコツ調べてご自分に合うライブラリを見つけて是非活用してください。

それでは、また次回お会いしましょう。

 

Python基礎を紹介した記事一覧

【Python基礎編】プログラミング初心者がPythonを学んだ方が良い理由【インストールから簡単なプログラムまで】

【Python基礎編】データをうまく出力するには型にはめることが重要【データの型・演算子・関数を知る】

【Python基礎編】もし好きな動物を連れて行けたらあなたの選択は?【if文で条件分岐をマスター】

【Python基礎編】ペンギンを仲間にするためには三顧の礼では失礼なのか【for文で繰り返し処理】

【Python基礎編】人気者のペンギンでも即OKをもらえる方法【for文の続き・breakで処理を中断】

【python】組織内のごたごたは早めに解決しておきたい【リスト・タプルの使い方】

【python】動物たちに名前を聞いて親密度を高めよう【辞書】

 

 


ぺんぺん
けっこう簡単にファイル操作できるんだね!
ケンケン
うん、そうだね。
ケンケン
ライブラリは他にも無数にあるからいっぱい挑戦してみよう!
ケロケロ
了解でーす!
ぺんぺん
急にカットイン!